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
P C# Salvare una colonna del DataGridView XML 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S [VB.NET]: Coordinate immagini dentro una PictureBox Visual Basic 0
I stampare una stringa echo PHP 2
MarcoGrazia Riprendere una sessione interrotta PHP 0
L Rendere una parte trasparente Photoshop 3
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
otto9due Ordinare option di una select Javascript 5
N Come si crea una variabile dinamica da incrementare? Javascript 1
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
L Riempimento di una tabella al click di un bottone Javascript 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
A media degli elementi estratti da una query MySQL 0
spider81man Eliminare primo ed ultimo carattere di una colonna MySQL 0
pacemattia408 disattivazione di una function Javascript 4
G Eliminare l'effetto refresh di una pagina internet PHP 8
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
M Select Option dentro una Table jQuery 2
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
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 7
S Selezionare ultimo record di una sotto query MySQL 27
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

Discussioni simili