如何使用 Javascript XMLHttpRequest 将 JSON 数据对象发送到服务器?
How to send a JSON data object to the server using Javascript XMLHttpRequest?
我向 PHP 服务器发送了一个 XMLHttp 请求。我无法获得 hte $_POST
或 $_REQUEST
对象,其中填充了我使用 Javascript:
发送的数据
var r = new XMLHttpRequest;
r.open("POST", "http://url.com", true);
r.send({ myname : 'someName'});
我无法访问 $_POST
数组中的 myname
属性,但我在 php://input
中看到了。我应该如何在 $_POST
中也有它?我试过这样发送数据:
r.send(JSON.stringify({ myname : 'someName'}));
但这两个都不起作用。
试试这个
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"}));
这应该有效:
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'});
PHP 不会为 application/json
请求填充 $_POST
。
(您实际上并没有发送正确的 JSON 请求,因为您忘记在 XHR object 上设置 Content-Type
header,但数据将在任何其他格式中均无效,因此最终结果相同。)
它只会对 application/x-www-form-urlencoded
和 multipart/form-data
数据这样做。
如果您想填充 $_POST
,则不要使用 JSON 作为您的数据格式。 (您可以使用 URL 编码格式中嵌入的 JSON,但这只会为您提供 $_POST['json']
中 JSON 文本的字符串表示,而不会直接为您提供访问编码在 JSON.
中的数据
我向 PHP 服务器发送了一个 XMLHttp 请求。我无法获得 hte $_POST
或 $_REQUEST
对象,其中填充了我使用 Javascript:
var r = new XMLHttpRequest;
r.open("POST", "http://url.com", true);
r.send({ myname : 'someName'});
我无法访问 $_POST
数组中的 myname
属性,但我在 php://input
中看到了。我应该如何在 $_POST
中也有它?我试过这样发送数据:
r.send(JSON.stringify({ myname : 'someName'}));
但这两个都不起作用。
试试这个
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"}));
这应该有效:
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'});
PHP 不会为 application/json
请求填充 $_POST
。
(您实际上并没有发送正确的 JSON 请求,因为您忘记在 XHR object 上设置 Content-Type
header,但数据将在任何其他格式中均无效,因此最终结果相同。)
它只会对 application/x-www-form-urlencoded
和 multipart/form-data
数据这样做。
如果您想填充 $_POST
,则不要使用 JSON 作为您的数据格式。 (您可以使用 URL 编码格式中嵌入的 JSON,但这只会为您提供 $_POST['json']
中 JSON 文本的字符串表示,而不会直接为您提供访问编码在 JSON.