我正在发出AJAX请求并发送一些JSON:
$(function() {
var json = [{"id":"1", "area":"south"}, {"id":"2", "area":"north"},{"id":"3", "name":"east"},{"id":"1", "name":"west"}];
jQuery.ajax({
url: "index.php",
type: "POST",
data: {areas: JSON.stringify(json) },
dataType: "json",
beforeSend: function(x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/j-son;charset=UTF-8");
}
},
success: function(result) {
alert(result);
}
});
然后我试图在另一端使用
json_decode
将其解码为对PHP有用的东西:<?php
if(isset($_POST['areas'])) {
$json = $_POST['areas'];
$obj = json_decode($json);
var_dump($obj);
exit;
}
?>
AJAX帖子变得很好,如果我在
if(isset$_POST)
内放回声,我会把它放回去,因此似乎已经发送出去了。但是我只能从代码中返回Null
。谁能看到我所缺少的吗? 最佳答案
我相信您可以将json
数组直接传递给AJAX函数,并跳过JSON.stringify
函数调用:
$(function() {
var json = [{"id":"1", "area":"south"}, {"id":"2", "area":"north"},{"id":"3", "name":"east"},{"id":"1", "name":"west"}];
jQuery.ajax({
url: "index.php",
type: "POST",
data: {areas: json },
dataType: "json",
beforeSend: function(x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/j-son;charset=UTF-8");
}
},
success: function(result) {
alert(result);
}
});
});
更新
如果这是运行
$_POST['area']
之前PHP脚本的json_decode
变量的输出,请执行以下操作:Array (
[0] => Array ( [id] => 1 [area] => south )
[1] => Array ( [id] => 2 [area] => north )
[2] => Array ( [id] => 3 [name] => east )
[3] => Array ( [id] => 1 [name] => west )
)
然后,您不需要运行
json_decode
,因为您已经有了所需的对象。关于php - 通过jQuery Ajax发送JSON不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8978192/