[英]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.