J'ai une requête jQuery ajax comme;
$.ajax({
type: 'POST',
url: 'processor.php',
data: 'data1=testdata1&data2=testdata2&data3=testdata3',
cache: false,
success: function(result) {
if(result){
alert(result);
}else{
alert("error");
}
}
});
Le gestionnaire processor.php
est défini pour renvoyer un tableau tel que;
$array = array("a","b","c","d");
echo $array;
Je veux agir sur le côté client en fonction de cela. Dites si le tableau [0] est 'b', je veux alerter "bonjour". Encore une fois si le tableau [2] est 'x', je veux alerter "bonjour", etc. Comment puis-je filtrer des éléments de tableau afin de récupérer leurs données?
Vous devrez retourner le tableau encodé sous la forme json comme suit
$array = array("a","b","c","d");
echo json_encode($array);
alors vous pouvez y accéder en javascript le reconvertir en un tableau/objet comme
var result = eval(retuned_value);
Vous pouvez également naviguer à travers tous les éléments du tableau en utilisant une boucle for
for (var index in result){
// you can show both index and value to know how the array is indexed in javascript (but it should be the same way it was in the php script)
alert("index:" + index + "\n value" + result[index]);
}
dans votre code, il devrait ressembler à quelque chose comme:
$array = array("a","b","c","d");
echo json_encode( $array );
$.ajax({
type: 'POST',
url: 'processor.php',
data: 'data1=testdata1&data2=testdata2&data3=testdata3',
cache: false,
success: function(result) {
if(result){
resultObj = eval (result);
alert( resultObj );
}else{
alert("error");
}
}
});
Renvoyer JSON depuis php http://php.net/manual/en/function.json-encode.php
et en javascript, créez un objet à partir de la chaîne json. Pour ce faire, utilisez getJSON au lieu de ajax http://api.jquery.com/jQuery.getJSON/
Assurez-vous que votre php définit le bon en-tête de réponse:
header ("content-type: application/json; charset=utf-8");
Je trouve le meilleur moyen de retourner un tableau de php en Ajax (jScript):
du côté php: echo json_encode($myArray);
du côté javascript (par exemple, myAjax.responseText
) replyVal = JSON.parse(myAjax.responseText);
Pour envoyer des tableaux TO php à partir de javascript, utilisez les JSON.stringify()
correspondants pour envoyer Et php json_decode()
pour recevoir
Dans votre code PHP, codez le tableau sous forme d'objet JSON.
echo json_encode($array);
Ensuite, vous devez convertir l'objet JSON en un objet compatible Javascript/jQuery. Ensuite, vous pouvez reconvertir en un tableau
$.ajax({
success: function(result) {
jq_json_obj = $.parseJSON(result); //Convert the JSON object to jQuery-compatible
if(typeof jq_json_obj == 'object'){ //Test if variable is a [JSON] object
jq_obj = eval (jq_json_obj);
//Convert back to an array
jq_array = [];
for(elem in jq_obj){
jq_array.Push(jq_obj[elem]);
}
console.log(jq_array);
}else{
console.log("Error occurred!");
}
}
});