web-dev-qa-db-fra.com

Comment transmettre des variables avec XMLHTTPRequest

Comment envoyer des variables au serveur avec XMLHTTPRequest? Est-ce que je les ajouterais simplement à la fin de l'URL de la demande GET, comme ?variable1=?variable2=, etc.?

Donc plus ou moins:

XMLHttpRequest("GET", "blahblah.psp?variable1=?" + var1 + "?variable2=" + var2, true)
28
Andrew Alexander

Si vous souhaitez transmettre des variables au serveur à l'aide de GET, ce serait la solution. N'oubliez pas de leur échapper (urlencode) correctement!

Il est également possible d'utiliser POST si vous ne voulez pas que vos variables soient visibles.

Un échantillon complet serait:

var url = "bla.php";
var params = "somevariable=somevalue&anothervariable=anothervalue";
var http = new XMLHttpRequest();

http.open("GET", url+"?"+params, true);
http.onreadystatechange = function()
{
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(null);

Pour tester cela, (en utilisant PHP), vous pouvez var_dump $_GET voir ce que vous récupérez.

38
TJHeuvel

Le formatage manuel de la chaîne de requête convient parfaitement pour des situations simples. Mais cela peut devenir fastidieux quand il y a beaucoup de paramètres.

Vous pouvez écrire une fonction utilitaire simple qui gère la création du format de requête pour vous.

function formatParams( params ){
  return "?" + Object
        .keys(params)
        .map(function(key){
          return key+"="+encodeURIComponent(params[key])
        })
        .join("&")
}

Et vous l'utiliseriez de cette manière pour créer une demande.

var endpoint = "https://api.example.com/endpoint"
var params = {
  a: 1, 
  b: 2,
  c: 3
}

var url = endpoint + formatParams(params)
//=> "https://api.example.com/endpoint?a=1&b=2&c=3"

Il existe de nombreuses fonctions utilitaires disponibles pour manipuler les URL. Si vous avez JQuery dans votre projet, vous pouvez essayer http://api.jquery.com/jquery.param/ / try. 

Cette fonction est similaire à l'exemple ci-dessus, mais gère la sérialisation récursive des objets et des tableaux.

36
James Forbes

Le format correct pour passer des variables dans une requête GET est

?variable1=value1&variable2=value2&variable3=value3...
                 ^ ---notice &--- ^

Mais essentiellement, vous avez la bonne idée.

6
mellamokb

Ce qui suit est correct:

xmlhttp.open("GET","getuser.php?fname="+abc ,true);
1

Oui, c’est la bonne méthode pour le faire avec une requête GET. 

Cependant, rappelez-vous que plusieurs paramètres de chaîne de requête doivent être séparés par &

par exemple. ? variable1 = valeur1 & variable2 = valeur2

0
cowls