【发布时间】:2012-02-17 04:33:07
【问题描述】:
我正在发出 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。谁能看到我错过了什么?
【问题讨论】:
-
如果在 PHP 脚本中回显
$_POST['area']变量(不通过json_decode()运行它的值)会得到什么? -
嗨 Jasper,如果我按照您的建议打印帖子,我会返回一个数组...Array ( [0] => Array ( [id] => 1 [area] => south ) [ 1] => 数组 ( [id] => 2 [area] => 北 ) [2] => 数组 ( [id] => 3 [name] => 东 ) [3] => 数组 ( [id] = > 1 [name] => west ) ) 但这对我来说毫无意义。在我解码之前它不应该是一个数组吧?
-
你正在从一个对象创建一个字符串; jQuery 然后将您的字符串转换为查询字符串参数;然后 PHP 将获取该查询字符串参数并将其转换回一个对象。这与在表单的
name属性中使用[]创建数组的行为相同。似乎问题在于您正在尝试从对象创建对象(您尝试做的太多了!)。 -
我没有关注。我认为这是正确的方法吗?有什么想法可以让它发挥作用吗?
-
如果当你
print_r($_POST['areas'])得到你想要的结构时,不要对它做任何事情,删除$obj = json_decodE($json);行或将其更改为$obj = $_POST['areas']。