我正在努力应对非常简单的事情。我花了好几个小时在网上寻找解决方案,并检查了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
答案 0 :(得分:1)
根据this,$HTTP_RAW_POST_DATA
仅填充了无法识别的数据MIME类型。要解决此问题,您可以将always_populate_raw_post_data
ini值设置为true,或使用首选方法访问原始POST数据,从php://input
读取
$postdata = file_get_contents("php://input");
此外,它看起来不像你正在向服务器发送json,试试这个
data: JSON.strinify({areas: json }),
答案 1 :(得分: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));