10

次のようなjquery ajaxリクエストがあります。

$.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");
      }
    }
});

ハンドラーprocessor.phpは次のような配列を返すように設定されています。

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

これに基づいてクライアント側でアクションを行いたいと思います。配列[0]が「b」の場合、「こんにちは」とアラートを出したいとします。ここでも、array[2] が 'x' の場合、「こんにちは」などと警告したいと思います。データを取得するために配列要素をフィルタリングするにはどうすればよいですか?

4

5 に答える 5

24

次のように、json 形式でエンコードされた配列を返す必要があります。

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

次に、JavaScriptでアクセスして、次のような配列/オブジェクトに戻すことができます

var result = eval(retuned_value);

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]);
}

コードでは、次のようになります。

PHP コード:

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

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");
      }
    }
});
于 2013-03-09T13:42:38.660 に答える
2

PHP http://php.net/manual/en/function.json-encode.phpから JSON を返す

JavaScript では、json 文字列からオブジェクトを作成します。これは、ajax http://api.jquery.com/jQuery.getJSON/の代わりに getJSON を使用して行うことができます。

PHP が正しい応答ヘッダーを設定していることを確認してください。

 header ("content-type: application/json; charset=utf-8");
于 2013-03-09T13:50:16.837 に答える
2

PHP から Ajax (jscript) に配列を返す最良の方法を見つけました。

PHP 側: echo json_encode($myArray); JavaScript 側 (例myAjax.responseText) replyVal = JSON.parse(myAjax.responseText);

javascript から配列を php に送信するには、マッチングJSON.stringify()を使用して送信し、phpjson_decode()を受信します。

于 2015-03-13T20:26:52.183 に答える
-1
$.ajax({  
    type: 'POST',  
    url: 'processor.php',//please return in json  
    dataType : 'json',//to get data in json   
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',  
    cache: false,  
    success: function(result) {  
      if(result.array.length > 0){  
        for(var i=0;i<result.array.length;i++){  
            if(result.array.[i]== 'a'){  
               //do somthing..  
               //here, you can use switch case too...  
            }  
        }  
      }  
    }  
});
于 2016-07-12T03:51:46.087 に答える