2010-03-09 4 views
36

Je poste des données en utilisant ajax. Je veux manipuler ces données et revenir au script jQuery appelant.Comment retourner les données de PHP à un appel ajax jQuery

Voici mon jQuery:

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

Voici mon somescript.php sur le serveur:

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

Suis-je le faire correctement sur le côté serveur, et comment puis-je accéder au retour chaîne lorsque l'appel ajax se termine?

+0

Utiliser succès: fonction (données) {alert (données);} alertes null. – user191688

Répondre

60

Je l'ai compris. Besoin d'utiliser echo en PHP au lieu de retour.

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

Et JQ:

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

si '$ output' est un tableau, comment allez-vous retourner ce tableau? –

9

Il est un argument passé à votre fonction de succès:

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

La signature complète est success(data, textStatus, XMLHttpRequest), mais vous pouvez utiliser juste qu'il premier argument si elle est une simple chaîne de revenir. Comme toujours, see the docs for a full explanation :)

+0

Exactement! Je vois que vous m'avez battu ... – Aaron

2

Oui, la façon dont vous le faites est parfaitement légitime. Pour accéder à ces données côté client, modifiez votre fonction de réussite pour accepter un paramètre: data.

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

Je pensais que oui, mais l'alerte (données) est nulle. Et je sais que la sortie $ dans PHP n'est pas nulle. Je vais essayer textStatus. – user191688

Questions connexes