JS的文字JS数组

时间:2013-09-29 07:37:41

标签: javascript php arrays

在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"
  }
}

有没有办法在一个简单的方法做到这一点?我必须迭代并处理它吗?

3 个答案:

答案 0 :(得分:3)

使用JSON.stringify对数据结构进行编码,将结果字符串作为单个参数发送,然后在PHP中使用json_decode($json, true)对其进行解码。

<强> 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
} 

答案 1 :(得分:1)

我认为你的意思是这样的:

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

所以你实际上有两个对象要转移到PHP,打包成一个数组,对吧?尝试使用JSON:

创建一个JSON字符串并将其发送到服务器:

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

在服务器端,你现在在$ _POST ['json']中有json字符串,你可以用以下代码解码它:

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

获取(多维)数组,或

json_decode($_POST['json']); 

表示包含两个对象的数组。

修改

如果您启用了“魔术引号”,则必须先剥去反斜杠:

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

HTH,

答案 2 :(得分:0)

您好:

我认为你应该尝试以下javascript

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