2009-06-17 28 views
4

Avec $ .post, vous pouvez envoyer des informations au serveur, mais que faire lorsque vous avez besoin de recevoir des informations du serveur?envoyer des informations dans les deux sens avec AJAX

De quelle façon l'information peut-elle être conservée par une variable php comme pouvant être détenue par une variable javascript et vice-versa?

Répondre

6

Ceci est plus pertinent à votre question: http://docs.jquery.com/Ajax/jQuery.post

alerte sur les résultats de la demande test.php (HTML ou XML, en fonction de ce qui a été retourné).

$.post("test.php", function(data){ 
    alert("Data Loaded: " + data); 
}); 

alerte sur les résultats de la demande test.php avec une charge utile supplémentaire de données (HTML ou XML, en fonction de ce qui a été retourné).

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data){ 
    alert("Data Loaded: " + data); 
    }); 

Obtient le contenu de la page test.php, la stocker dans un objet XMLHttpResponse et applique le processus() fonction JavaScript.

$.post("test.php", { name: "John", time: "2pm" }, 
    function(data){ 
    process(data); 
    }, "xml"); 

Obtient le contenu de la page test.php qui a été retourné au format JSON ("John", "temps" => "14 heures")); ?>)

$.post("test.php", { func: "getNameAndTime" }, 
    function(data){ 
    alert(data.name); // John 
    console.log(data.time); // 2pm 
    }, "json"); 
4

Consultez json_encode() et json_decode(). Ils font maintenant partie de PHP et vous permettent de basculer entre les tableaux PHP et les tableaux associatifs (ou les objets stdClass) et les tableaux ou objets javascript (en tant que JSON littéral). En gros, au lieu de retourner xml ou html, vous pouvez faire echo json_encode($all_my_php_data); et récupérer un objet javascript.

Si vous passez 'json' comme paramètre de type de votre $ .post(), votre callback de succès contiendra l'objet JSON que vous avez renvoyé dans votre script PHP.

$.post() documentation

0

Ensuite, vous devez recevoir le contenu renvoyé par le serveur. Vous définissez simplement la fonction de rappel pour $ .post avec le paramètre 'data'. Par exemple:

$.post('/index.php', { key: 'value' }, function(data) { alert(data); }); 

Vous pouvez spécifier le type de la valeur retournée afin que jQuery peut traiter automatiquement. Si vous revenez valeur JSON à partir du script PHP, vous devez ajouter le paramètre supplémentaire à la fin:

$.post('/index.php', { key: 'value' }, function(data) { 
    alert(data.someItem); 
    }, 'json'); 

Mais si vous avez besoin d'obtenir des données de serveur PHP sans POSTer ou d'obtenir quoi que ce soit d'abord, vous devez mettre en œuvre Comet. Mais c'est un peu plus de travail :)

+0

Toutes les grandes implémentations Comet utilisent GET ou POST. –

0

Dans http, vous effectuez une requête du client (javascript dans le navigateur Web) sur le serveur, puis traitez les informations renvoyées par ce dernier. Le choix de la façon dont l'information est représentée dans les deux communications est à vous.Lorsque vous utilisez AJAX (éventuellement via jQuery), vous pouvez demander à un gestionnaire php de renvoyer les informations au navigateur, généralement au format JSON (vous pouvez encoder la réponse en utilisant json_encode() , comme suggéré par Brian). Éventuellement, vous l'analyserez sur le client (par exemple en utilisant jQuery) pour obtenir un objet javascript. (La fonction $ .post (url, [données], [callback], [type]) analysera automatiquement la réponse et la cédera à la fonction callback, dont la signature devrait être callback (data, textStatus) où données est être l'objet analysé et textStatus rapports succès ou l'échec état (jQuery.post).

Questions connexes