web-dev-qa-db-fra.com

retourne responseText depuis jQuery.get ()

J'ai essayé de faire quelque chose comme ça:

var msg = $.get("my_script.php");

Je pensais que msg serait défini sur le texte renvoyé par my_script.php, c'est-à-dire. le responseText de l'objet jqXHR. Apparemment, cela ne fonctionne pas comme ça car msg est toujours réglé sur "[objet XMLHttpRequest]"

Existe-t-il un moyen rapide de faire ce que je veux sur une seule ligne?

Merci.

12
Yann Milin

Après quelques essais, j'ai fini par trouver une solution.

J'ai besoin que l'appel soit synchrone, la fonction de raccourci de $ .get est toujours asynchrone, je vais donc devoir utiliser $ .ajax, comme ceci:

var msg = $.ajax({type: "GET", url: "my_script.php", async: false}).responseText;

Je ne pense pas qu'il existe un meilleur moyen de le faire, merci pour vos réponses.

29
Yann Milin

Vous pouvez toujours utiliser:

var msg;
$.get("my_script.php", function(text) {
  msg = text;
});

Si, pour une raison quelconque, la réponse est textuelle, le script distant peut modifier le type de contenu en quelque chose comme JSON et jQuery essaie donc d'analyser la chaîne avant de vous envoyer le résultat.

6
Vitor M

La valeur de retour est simplement l'objet jqXHR utilisé pour la requête ajax. Pour obtenir les données de réponse, vous devez enregistrer un rappel.

$.get("my_script.php", function(data) {
  var msg = data;
  alert(msg);
});
2
njr101

Le texte de la réponse est disponible dans le rappel de réussite; faites ce que vous devez faire avec cela là-bas.

1
Dave Newton