0

JSでは、次のものがあります。

var languages = [{
    language: "da"
    listening: "A1"
}, {
    language: "en"
    listening: "B2"
}];

$.ajax呼び出し後にPHPで最終的に得られるのは次のとおりです。

array(4) {
  [0]=>
  array(1) {
    ["language"]=>
    string(2) "da"
  }
  [1]=>
  array(1) {
    ["listening"]=>
    string(2) "A1"
  }
  [2]=>
  array(1) {
    ["language"]=>
    string(0) "en"
  }
  ...
}

私が必要とするのは次のようなものです:

array(2) {
  [0]=>
  array(2) {
    ["language"]=>
    string(2) "da",
    ["listening"]=>
    string(2) "A1"
  }
  [1]=>
  array(2) {
    ["language"]=>
    string(2) "en",
    ["listening"]=>
    string(2) "B1"
  }
}

これを簡単に行う方法はありますか?反復して処理する必要がありますか?

4

3 に答える 3

3

JSON.stringifyデータ構造をエンコードし、結果の文字列を単一のパラメーターとして送信しjson_decode($json, true)、PHP でデコードするために使用します。

JS

var data = [
   { language: "da", listening: "A1"}, 
   { language: "en", listening: "B2"}
];
// ...
$.post(url, { data: JSON.stringify(data) }, function() { ... });

PHP

if (isset($_POST['data'])) {
  $data = json_decode($_POST['data'], true);
  // process this array of arrays
} 
于 2013-09-29T07:45:33.493 に答える
1

次のような意味だと思います。

var languages = [{
    language: "da"
    listening: "A1"
}, {
    language: "en"
    listening: "B2"
}];

実際には、配列にパックされた 2 つのオブジェクトを PHP に転送する必要がありますね。JSON を使用してみてください。

JSON 文字列を作成してサーバーに送信します。

$.ajax({
    url: '...',
    type: 'POST',
    data: { json: JSON.stringify(languages)}
});

サーバー側では、$_POST['json'] に json 文字列が含まれるようになり、次のようにデコードできます。

json_decode($_POST['json'], true); 

(多次元) 配列を取得する、または

json_decode($_POST['json']); 

2 つのオブジェクトを含む配列の場合。

編集

「マジック クォート」をオンにしている場合は、最初にバックスラッシュを削除する必要があります。

json_decode(stripslashes($_POST['json']), true); 

HTH、

于 2013-09-29T07:51:05.293 に答える