web-dev-qa-db-fra.com

Comment travailler avec jQuery AJAX et PHP retour de tableau

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?

10
blasteralfred Ψ

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:

Code PHP:

$array = array("a","b","c","d");
echo json_encode( $array );

script jQuery

$.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");
      }
    }
});
24
Abu Romaïssae

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");
2
HMR

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

1
ChrisH

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!"); 
      }
    }
});
1
aphoe