在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"
}
}
有没有办法在一个简单的方法做到这一点?我必须迭代并处理它吗?
答案 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"}
]
}