我有这段代码:
var temp = 'tag1,tag2'.split(','),
tags = [];
if (temp.length > 0) {
for (i = 0; i < temp.length; ++i) {
tags.push(temp[i]);
}
}
现在我想将此数组作为Ajax请求发送:
var data = {
action: 'my_wp_ajax',
ajax_req: JSON.stringify(tags)
};
$.post(
ajaxurl,
data,
function (data) {
console.log('this is data: '+data);
}
);
另一方面,我有这些代码:
echo $_POST['ajax_req'];
$temp = json_decode($_POST['ajax_req']);
$error = json_last_error();
echo $error;
我在浏览器控制台中看到的结果是:
this is data: "[\\\"tag1\\\",\\\"tag2\\\"]4"
正如您在上面的结果中看到的,最后一个json错误是4,这意味着无效的json语法。我不知道上面的代码有什么问题。如果我试试
foreach (json_decode($_POST['ajax_req']) as $hi)
echo $hi;
在控制台中它只显示我
this is data: ""
我做错了什么?
修改
我在控制台中尝试了var_dump(get_magic_quotes_gpc(), $_POST);
和结果:
"bool(false)\narray(2) {\n [\"action\"]=>\n string(8) \"my_wp_ajax\"\n [\"ajax_req\"]=>\n string(19) \"[\\\"tag1\\\",\\\"tag2\\\"]\"\n}\n0"
答案 0 :(得分:0)
无需双重字符串化数组,传递给数组的data
将由jQuery正确处理:
var tags = 'tag1,tag2'.split(',');
var data = {
action: 'my_wp_ajax',
ajax_req: tags
};