如何使用Javascript XMLHttpRequest将JSON数据对象发送到服务器?

时间:2015-02-27 11:00:17

标签: javascript php ajax json xmlhttprequest

我将XMLHttp请求发送到PHP服务器。我无法使用Javascript将hte $_POST$_REQUEST对象填充为我发送的数据:

var r = new XMLHttpRequest;

r.open("POST", "http://url.com", true);

r.send({ myname : 'someName'});

虽然我在myname中看到,但我无法访问$_POST数组中的php://input属性。我应该如何在$_POST中拥有它?我试图发送这样的数据:

r.send(JSON.stringify({ myname : 'someName'}));

但它既不起作用。

3 个答案:

答案 0 :(得分:2)

试试这个

var xmlhttp = new XMLHttpRequest();   
xmlhttp.open("POST", "http://url.com", true);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({ myname : "someName"}));

答案 1 :(得分:2)

这应该有效:

r.open('POST','http://url.com',true);
r.setRequestHeader('Content-type','application/json; charset=utf-8');
r.setRequestHeader("Content-length", string.length);
r.setRequestHeader("Connection", "close");   
r.send({ myname : 'someName'});

答案 2 :(得分:1)

PHP不会为$_POST请求填充application/json

(您实际上并没有发送正确的JSON请求,因为您忘记在XHR对象上设置Content-Type标头,但数据在任何其他格式中都是无效的,因此最终结果是相同的。)

仅对application/x-www-form-urlencodedmultipart/form-data数据执行此操作。

如果要填充$_POST,请不要使用JSON作为数据格式。 (您可以使用以URL编码格式嵌入的JSON,但这只会在$_POST['json']中为您提供JSON文本的字符串表示,并且不会让您直接访问JSON中编码的数据。