2010-03-09 24 views
36

Sto postando alcuni dati usando ajax. Voglio manipolare i dati e tornare allo script jQuery chiamante.Come restituire i dati da PHP a una chiamata jQuery ajax

Ecco il mio jQuery:

$.ajax({ 
    type: "POST", 
    url: "somescript.php", 
    datatype: "html", 
    data: dataString, 
    success: function() { 
    //do something; 
    } 
}); 

Ecco il mio somescript.php sul server:

<?php 
    //manipulate data 
    $output = some_function(); //function outputs a comma-separated string 
    return $output; 
    ?> 

sto facendo questo correttamente sul lato server, e come posso accedere al ritorno stringa quando termina la chiamata ajax?

+0

Utilizzando il successo: la funzione (dati) {alert (dati);} Allerte nullo. – user191688

risposta

60

L'ho capito. È necessario utilizzare echo in PHP anziché restituire.

<?php 
    $output = some_function(); 
    echo $output; 
?> 

E il JQ:

success: function(data) { 
    doSomething(data); 
} 
+0

se '$ output' è un array, come restituirai quell'array? –

9

E 'un argomento passato alla funzione successo:

$.ajax({ 
    type: "POST", 
    url: "somescript.php", 
    datatype: "html", 
    data: dataString, 
    success: function(data) { 
    alert(data); 
    } 
}); 

La firma completa è success(data, textStatus, XMLHttpRequest), ma è possibile utilizzare solo lui primo argomento se si tratta di una semplice stringa di ritorno. Come sempre, see the docs for a full explanation :)

+0

Esattamente! Vedo che mi hai battuto per questo ... – Aaron

2

Sì, il modo in cui lo stai facendo è perfettamente legittimo. Per accedere a tali dati sul lato client, modifica la tua funzione di successo per accettare un parametro: dati.

$.ajax({ 
    type: "POST", 
    url: "somescript.php", 
    datatype: "html", 
    data: dataString, 
    success: function(data) { 
     doSomething(data); 
    } 
}); 
+0

Ho pensato così, ma avviso (dati) sta spuntando nulla. E so che l'output $ nel PHP non è nullo. Proverò textStatus. – user191688

Problemi correlati