繁体   English   中英

JS文字数组到PHP

[英]JS array of literals to PHP

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

有没有一种简单的方法可以做到这一点? 我是否需要迭代和处理它?

使用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
} 

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

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,

你好:

我认为您应该尝试以下javascript

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM