1

このように作成した配列またはjavascriptオブジェクトが あります。arr[arr.length]=obj ここで、objはのような古典的なJSON文字列です{"id":1}

つまりarr、JavaScriptオブジェクトの配列のようです。

私はこのようにそれにアクセスすることができます: arr[1]arr[2]。それもalert(arr[1].id);

私がそうする場合:alert(JSON.stringify(arr)); 私は次のようになります:

[{"id":"2305","col":"1"},{"id":"2308","col":"1"},{"id":"2307","col":"1"},{"id":"2306","col":"1"}]

一方、alert(arr); 私に次のようなものを与えます:

[object Object],[object Object],[object Object],[object Object],[object Object]

次に、jQueryのAJAXメソッドを使用してPHPスクリプトに渡す必要があります。しかし、次のような組み合わせた文字列しか取得できないようです。

{"id":"2305","col":"1"}また{"id":"2305","col":"1","id":"2305","col":"1"}

しかし、JSON.stringifyはarrオブジェクトを正常に解析し、以前の文字列の例は有効なJSON文字列のようです。どうすればPHPに渡すことができますか?構造の形式全体を最後のサンプルのように実際に変更する必要がありますか?

UPD:「{}」文字列ではなく「{}、{}、{}」文字列をPHPに送信すると、PHPのPOST配列がnullになることを忘れました。

UPD:文字列を生成したコードを書き直しました。今、私はこのような文字列を持っています:

{"2305":"1","2306":"1"}

次のように、PHPに直接渡すと機能します。

   $.post({url: '../getItems2Cart.php', data:{"2305":"1","2306":"1"} ,
       success: function(response){alert(response);}
   });

このように送信すると、phpは空のPOST配列を返します。

$.post({url: '../getItems2Cart.php', data: JSON.stringify(str),.
       success: function(response){alert(response);}
});

明確にするために、alertは適切なJSONを強力に返します。

alert('json str to php '+JSON.stringify(str));
//json str to php {"2305":"1","2306":"1"}

ああ..はい、strはjavascriptオブジェクトであり、文字列ではありません。

4

1 に答える 1

7

JSONを送信し、json_decode()それを使用してphp配列に変換できます。

$.post('server/path', { jsonData: JSON.stringify(arr)}, function(response){
   /* do something with response if needed*/
});

PHPで:

$arr=json_decode( $_POST['jsonData'] );
/* return first ID as test*/
echo $arr[0]['id'];
/* or dump whole array as response to ajax:*/
print_r($arr);
于 2013-01-06T16:00:44.283 に答える