我将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'}));
但它既不起作用。
答案 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-urlencoded
和multipart/form-data
数据执行此操作。
如果要填充$_POST
,请不要使用JSON作为数据格式。 (您可以使用以URL编码格式嵌入的JSON,但这只会在$_POST['json']
中为您提供JSON文本的字符串表示,并且不会让您直接访问JSON中编码的数据。