Chiamare una funzione specifica di php da una richiesta ajax?

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
Ho creato un'applicazione web che si basa sul framework CodeIgniter. Funziona molto bene ma il reparto di sviluppo mi ha chiesto di riscriverla senza utilizzare alcuna dipendenza da framework, quindi puro codice php. Ora ho bisogno di conoscere se è possibile eseguire una richiesta ajax richiamando una specifica funzione php.
Ho un file chiamato login.php, in questo file c'è un form per inserire username e password per far loggare l'utente, queste informazioni poi verranno spedite al server. Ora quando l'utente preme il pulsante di login si attiva questo codice:

Codice:
 var postUrl = GlobalVariables.baseUrl + 'application/controllers/user.php/ajax_check_login';
 var postData =
 {
      'username': $('#username').val(),
      'password': $('#password').val()
 };

 $.post(postUrl, postData, function(response)
 {
      // Some stuff..
 }, 'json');

La variabile postUrl viene valorizzata correttamente con questo contenuto:

http://localhost/App_Name/application/controllers/user.php/ajax_check_login

Ora io dispongo di una lista di controller che ho creato per gestire l'applicazione web. Uno di questi controller è user.php, in esso sono contenute tutte le funzioni per la gestione dell'uetnte. Come potete vedere dalla richiesta ajax voglio richiamare la funzione ajax_check_login la quale mi permetterà di controllare se l'utente ha inserito credenziali corrette per effettuare l'accesso al server.
Il contenuto della funzione è il seguente:

Codice:
public function ajax_check_login()
{   
    echo "Test?";
    try
    {
        if(!isset($_POST['username']) || !isset($_POST['password']))
        {
            throw new Exception('Credenziali non corrette!');
        }

        $user_data = $this->check_login($_POST['username'], $_POST['password']);

        if($user_data)
        {
            $output[] = array(
                "contenuto.."
            echo json_encode($output);
        }
        else
        {
            echo json_encode(AJAX_FAILURE);
        }

    }
    catch(Exception $exc)
    {
        echo json_encode(array(
            'Eccezioni ' => array(exceptionToJavaScript($exc))
        ));
    }
}

Al di sopra di tutto ho inserito un echo giusto per vedere se veniva stampato qualcosa ma nulla...
Nella console di Chrome c'è il seguente contenuto quando clicco su "ajax_check_login":

This request has no response data available.

Non so esattamente cosa sto sbagliando perché il tutto funzionava bene con il framework, inizio a pensare che non posso chiamare una funzione specifica semplicemente riferendomi all'url sulla variabile postUrl. Ho infatti effettuato alcuni test eliminando del tutto la funzione dal controller e cosa ho ottenuto? Lo stesso risultato, quindi penso a questo punto che ajax non permetta, o non riesce ad identificare la funzione specifica in questo modo da solo. Ho anche provato a rimuovere il 'json' alla fine della richiesta post e ottengo lo stesso risultato. Qualche idea?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, la variabile dell'url non mi sembra corretta : se ajax_check_login è una directory dovrebbe terminare con lo slash.
Ti converrebbe usare il metodo $.getJSON se sai di ricevere un json o in alternativa la sintassi estesa del metodo $.ajax.
con i metodi fail() e error() puoi scoprire se la chiamata non va a buon fine
Codice:
 $.getJSON(postUrl, postData, function (response) {
                // Some stuff..
            }).error(function () {
                alert("errore chiamata ajax");
            }).fail(function () {
                alert("errore risposta ajax");
            });
 

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
Ciao, la variabile dell'url non mi sembra corretta : se ajax_check_login è una directory dovrebbe terminare con lo slash.
Ti converrebbe usare il metodo $.getJSON se sai di ricevere un json o in alternativa la sintassi estesa del metodo $.ajax.
con i metodi fail() e error() puoi scoprire se la chiamata non va a buon fine
Codice:
 $.getJSON(postUrl, postData, function (response) {
                // Some stuff..
            }).error(function () {
                alert("errore chiamata ajax");
            }).fail(function () {
                alert("errore risposta ajax");
            });

No, non è una directory... Comunque ho risolto. Praticamente mi sono dovuto creare un wrapper, una classe che mi permetta di effettuare le chiamate ajax su classi contenenti metodi che estendono controlli. Insomma, il modello MVC.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Chiamare una specifica funzione in una pagina php PHP 1
I chiamare una funzione Javascript 2
S problemi jquery ajax chiamare una pagina php Ajax 5
Y Come chiamare una pagina al verificarsi di un evento? Javascript 4
M Chiamare pagina php da javascript Javascript 8
T [ASP] Chiamare sub Classic ASP 4
P Chiamare pagina PHP con parametro da javascript Javascript 1
neo996sps Chiamare route laravel con passaggio di dati tramite jquery jQuery 0
Jonn Redirect Doppio (si può chiamare così?) PHP 3
WorldWideWeb Chiamare i metodi di un controllo OCX Visual Basic 1
G [javascript]Chiamare funzione javascript per menù Javascript 2
coteaz chiamare php con javascript PHP 4
coteaz chiamare php con javascript Javascript 5
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
E Scrivere una data corrente in un pdf PHP 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
I Assegnare dati fetch request ad una variabile globale Javascript 0
Shyson Puntare ad una sotto directory WordPress 3
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 6
S Selezionare ultimo record di una sotto query MySQL 26
V Query per una somma PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
W visualizzare solo file html e sottocartelle di una cartella PHP 1
W Elenco dei link del file presenti in una cartella PHP 2
R Mettere in sicurezza una comunicazione .NET Framework 0
L Creare una forma geometrica Photoshop 1
G Casella combinata in una query MS Access 4
voldemort Cos'è una SCRL? Che tipo di società è?? Leggi, Normative e Fisco 1
F Funzione Glob - ricerca file contenente una parola PHP 1
felino [EXCEL] Conteggio ore all'interno di una settimana Windows e Software 7
Y cambiare sfondo di una pagina Javascript 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Apertura in una nuova pagina PHP 6
S impostare un testo e una img nella stessa riga con jsPDF Javascript 0
F Prendere contenuti da una tabella PHP 4
B Stampare una porzione della pagina PHP 0
D assegnare risultato di una jquery ad una text Javascript 2
Cosina Cancellare una specifica email da un elenco in un file txt PHP 3
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
G Inserire una scritta Java 1
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
Cosina Mostrare immagini da una cartella, ma solo un numero definito PHP 12
Alex_70 Cerca testo all'interno di una stringa PHP 5
F Andare a capo all'interno di una tabella WordPress 4
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
W Creare link di una dato Classic ASP 0
G Associare un button ad una strnga PHP 9
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5

Discussioni simili