Disons que j'ai un tableau javascript avec un tas d'éléments (de 50 à 200).
Je veux envoyer cela à PHP (instruction préparée) en utilisant ajax. Actuellement, je .load
_ un fichier php plusieurs fois à l’intérieur d’une boucle, mais je souhaite le convertir en tableau et l’envoyer une fois, en chargeant le fichier PHP une fois au lieu de 50 à 200 fois).
array[i] = variable;
Vous pouvez utiliser JSON.stringify(array)
pour encoder votre tableau en JavaScript, puis utiliser $array=json_decode($_POST['jsondata']);
dans votre script PHP) pour le récupérer.
Les requêtes AJAX ne sont pas différentes des requêtes GET et POST sont initiées via un <form>
élément. Ce qui signifie que vous pouvez utiliser $ _GET et $ _POST pour récupérer les données.
Lorsque vous faites une demande AJAX (exemple jQuery):
// JavaScript file
elements = [1, 2, 9, 15].join(',')
$.post('/test.php', {elements: elements})
C'est (presque) équivalent à poster ce formulaire:
<form action="/test.php" method="post">
<input type="text" name="elements" value="1,2,9,15">
</form>
Dans les deux cas, côté serveur, vous pouvez lire les données de la variable $ _POST:
// test.php file
$elements = $_POST['elements'];
$elements = explode(',', $elements);
Par souci de simplicité, je joins les éléments avec une virgule ici. La sérialisation JSON est cependant une solution plus universelle.
Voici une fonction permettant de convertir un tableau ou un objet js en un tableau compatible php à envoyer en tant que paramètre de requête http get:
function obj2url(prefix, obj) {
var args=new Array();
if(typeof(obj) == 'object'){
for(var i in obj)
args[args.length]=any2url(prefix+'['+encodeURIComponent(i)+']', obj[i]);
}
else
args[args.length]=prefix+'='+encodeURIComponent(obj);
return args.join('&');
}
préfixe est un nom de paramètre.
EDIT:
var a = {
one: two,
three: four
};
alert('/script.php?'+obj2url('a', a));
Produira
/script.php?a[one]=two&a[three]=four
ce qui vous permettra d'utiliser $ _GET ['a'] comme un tableau dans script.php. Vous devrez vous frayer un chemin dans votre moteur ajax préféré en fournissant l'URL à appeler script.php à partir de js.