0

多次元配列に似た非常に複雑な Jquery オブジェクトがあります。console.log を使用すると、次のようになります。

[

[] id [ "91900" ] ロケーション [ "F43" , "F44" ] prev_location [ "F41" ] ,

[] id [ "92305" ] ロケーション [ "F38" , "F39" ] prev_location [ "F39" ] ,

[] ID [ "155972" ] 場所 [ "F35" ] 前の場所 [ "F45" ]

]

JQUERY/AJAXを使用してZendコントローラーに送信しようとして、文字列化しようとしましたが、コントローラーに投稿すると単なる配列になります。

データ = JSON.stringify(big_array)

$.ajax({

          type: 'POST',
            dataType: 'json', 
            url: '/project/public/index/send', 
            async: false,
            data: {myJson:  data},
            success: function(response) {
            }
            });

以下はコントローラーで、何かを出力しようとして、firebug が HTML 応答で少なくとも何かを表示できるようにしますが、配列以外は何も表示されません

パブリック関数 sendAction() {

  $data = $this->_request->getPost();
    $data_array = json_decode($data['myJson'], true);
    print_r($data_array);
}

何か案は?

4

1 に答える 1

0

問題は、データが有効な JSON として簡単に表現できないことだと思います。データ型をhtmlまたはテキストとして保持し、phpでJSON(または必要な形式)に処理することをお勧めします。

data = big_array;

$.ajax({

      type: 'POST',
        dataType: 'text', 
        url: '/project/public/index/send', 
        async: false,
        data: data,
           success: function(response) {
        }
});

あるいは、http: //phpjs.org/functions/base64_encode/のようなものを使用して、データを JSON 化する前に配列のチャンクをエンコードすることもできます。ただし、とにかくサーバー上のチャンクをデコードする必要があります。

お役に立てれば。

PS なぜ async: false を使用しているのか知りたいです。

于 2012-12-06T18:38:55.313 に答える