web-dev-qa-db-ja.com

jQueryの操作方法AJAX and PHP array return

私は次のような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;

これを踏まえてクライアントサイドでアクションを起こしていきたい。 array [0]が 'b'の場合、「こんにちは」に警告したいとします。繰り返しますが、array [2]が「x」の場合は、「こんにちは」と警告します。データを取得するために配列要素をフィルタリングするにはどうすればよいですか?

10

次のように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");
      }
    }
});
24
Abu Romaïssae

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

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

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

 header ("content-type: application/json; charset=utf-8");
2
HMR

私はphpからAjax(jscript)に配列を返す最良の方法を見つけます:

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

JavaScriptからphpに配列を送信するには、一致するJSON.stringify()を使用して送信し、php json_decode()を使用して受信します

1
ChrisH

PHPコードでは、配列をJSONオブジェクトとしてエンコードします

echo json_encode($array);

次に、JSONオブジェクトをJavascript/jQuery互換オブジェクトに変換する必要があります。その後、配列に戻すことができます

$.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