0

我正在努力解决应该非常简单的事情。我花了几个小时在网上寻找解决方案并查看了 jQuery 文档。

我正在尝试通过 json 字符串向我的服务器发送一个简单的请求。我尝试过转义 json、encodeURIcomponent 等。我相信这很简单,而且我很快就会被自己扇耳光,但这里是这样:

这是Javascript:

$(document).ready(function() {
$("#mybutton").click(function(e) {
submitMyRequest();  
});
});


function submitMyRequest()
{

var json = [{"id":"1", "area":"south"}, {"id":"2", "area":"north"},{"id":"3", "name":"east"},{"id":"1", "name":"west"}];

 jQuery.ajax({
     url: "test_server.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);
     }
 });
}

这是服务器代码:

print_r(json_decode($GLOBALS['HTTP_RAW_POST_DATA'],true));

我不断得到的结果是一个警报,上面写着:

null
4

2 回答 2

1

据此$HTTP_RAW_POST_DATA仅填充了无法识别的 MIME 类型的数据。为了克服这个问题,您可以将always_populate_raw_post_dataini 值设置为 true 或使用首选方法访问原始 POST 数据,从php://input

$postdata = file_get_contents("php://input");

此外,您似乎没有将 json 发送到服务器,试试这个

data: JSON.strinify({areas: json }),
于 2012-11-13T18:16:56.760 回答
0

试试这样:

var json = '[{"id":"1", "area":"south"}, {"id":"2", "area":"north"},{"id":"3", "name":"east"},{"id":"1", "name":"west"}]';

在您的服务器端:

print_r(json_decode($_POST['areas'],true));
于 2012-11-13T18:11:09.557 回答