web-dev-qa-db-fra.com

Comment puis-je envoyer un tableau à php via ajax?

Je veux envoyer un tableau construit en javascript avec les valeurs sélectionnées d'une sélection multiple. Est-il possible d'envoyer ce tableau à un script php en utilisant ajax?

25
Lucia

Vous pouvez poster sur votre serveur avec XML ou JSON. Votre javascript devra construire la publication, ce qui dans le cas de XML vous obligerait à la créer en javascript. JSON est non seulement plus léger, mais plus facile à créer en javascript. Consultez JSON-PHP pour analyser JSON.

Vous voudrez peut-être jeter un oeil à Créer des données JSON dans PHP

18
csexton

Vous pouvez le faire avec la méthode $ .post de jQuery (par exemple):

var myJavascriptArray = new Array('jj', 'kk', 'oo');

$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
   // do something with received data!
});

Php recevra un tableau qui sera nommé myphpvariable et qui contiendra les valeurs myJavascriptArray.

Est-ce que c'est ça ?

26
Dragouf

IIRC, si PHP voit une chaîne de requête ressemblant à http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz, il créera automatiquement un tableau appelé $var contenant foo, bar et baz. Je pense que vous pouvez même spécifier l'index de tableau dans les crochets de la chaîne de requête et il va coller la valeur dans cet index. Vous devrez peut-être encoder les crochets au format URL ... La manière habituelle d'utiliser cette fonctionnalité consiste à créer un champ de saisie HTML portant le nom "var []". Il vous suffit donc de faire ce que le navigateur y fait normalement. Il y a une section dans la documentation PHP sur les variables de tableau via la requête.

3
rmeador

Vous recherchez peut-être un moyen de Sérialiser (version jQuery) des données.

1
charlesbridge

jQuery 1.4 a été mis à jour pour utiliser la syntaxe PHP pour l'envoi de tableaux. Vous pouvez basculer dans l'ancien style en utilisant:

voici la synataxe:

jQuery.ajaxSetting.traditional = true;

voici l'exemple

$.ajax({    
 traditional: true,
 type: "post",
 url: myURL,
 dataType: "text", 
 data: dataToSend, //this will be an array eg. 
 success: function(request) {
  $('#results').html(request);
 }  // End success
 }); // End ajax method
1
kishanio

Vous pouvez créer un tableau et l’envoyer, comme recommandé par Meador: (Le code suivant est Mootooled, mais similaire dans d’autres bibliothèques/plain old JS)

myArray.each(function(item, index)  myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());

Cela enverra à php un tableau appelé arrayItems, accessible via $ _POST ['arrayItems'] 

echo $_POST['arrayItems'] ; 

fera écho quelque chose comme: array => {[0] => 'première chose', [1] => deuxième chose}

0
user52903