JS 文本到 PHP 的数组

JS array of literals to PHP

本文关键字:数组 PHP 文本 JS      更新时间:2023-09-26

在JS中,我有以下内容:

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

在 PHP 中,经过$.ajax调用后,我最终得到的是:

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); 

呵呵,

您好:

我认为你应该尝试如下JavaScript

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