9

AJAX、JSONをPHPに通信しようとしていますが、PHPはいくつかのデータを返し、Javascrptで解析しようとしています。

PHPから、私が返すサーバー、

    echo json_encode($data); 

    // it outputs ["123","something","and more something"]

そしてクライアント側では、

success : function(data){

    //I want the data as following

    // data[0] = 123
    // data[1] = something
    // data[3] = and more something
}

しかし、それは次のように与えます。

        data[0] = [ 
        data[1] = " 
        data[2] = 1

各文字を読み取っていますが、個々の文字ではなく、配列から文字列が必要です。ここで何が起きてるの?事前のおかげで、私はJavascriptとJSON、AJAXを初めて使用します。

4

5 に答える 5

11

JSON.parse(data)トリックを行う必要があります。

于 2012-05-31T10:25:48.970 に答える
4

dataTypeajax呼び出しのプロパティをに設定しますjson。次に、jQueryは応答をオブジェクト表現に自動的に変換します。

$.ajax({
    url : ...,
    data : ...,
    dataType : "json",
    success : function(json) {
        console.log(json);
    }
});

もう1つのオプションは、JSONオブジェクトを送信したことをJQueryが理解できるようにPHPでヘッダーを設定することです。

header("Content-Type: application/json");
echo json_encode($data);
于 2012-05-31T10:27:03.723 に答える
3

これをチェックしてください...動作するはずです

成功:function(data){

var result = data;

result=result.replace("[","");

result=result.replace("]","");

var arr = new Array();

arr=result.split(",")

alert(arr[0]); //123

alert(arr[1]); //something

alert(arr[2]); //......
}
于 2012-05-31T10:30:03.547 に答える
1

これがあなたが望むものであるかどうかはわかりませんが、なぜphpがこの形式でそれを返してほしくないのですか?

{'item1':'123','item2':'something','item3':'and more something'}

json_encode()これを実現するには、関連付けられている配列を確認する必要があります。以下の形式である必要があります

array("item1"=>123,"item2"=>"something","item3"=>"more something");

stripslashes()配列内の値の一部がURLである可能性がある場合は、先に進んで実行することもできます。

次にJSON.parse()、JSON文字列に対してを実行し、値にアクセスできます

これがお役に立てば幸いです。

于 2012-05-31T10:44:50.040 に答える
1

データを解析する関数を表示していません。しかし、あなたは使用する必要があります

JSON.parse

また、broserがJSONをサポートしていない場合は、 https: //github.com/douglascrockford/JSON-jsのjsonpolyfillを使用してください。

dataArray = JSON.parse(dataFomXHR);
于 2012-05-31T10:30:50.650 に答える