Javascript:使用Ajax发送JSON对象?

Ada*_*dam 139 javascript ajax json header request

这可能吗?

xmlHttp.send({
    "test" : "1",
    "test2" : "2",
});
Run Code Online (Sandbox Code Playgroud)

也许用:标题content type:application/json?:

xmlHttp.setRequestHeader('Content-Type', 'application/json')
Run Code Online (Sandbox Code Playgroud)

否则我可以使用:

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
Run Code Online (Sandbox Code Playgroud)

然后JSON.stringify是JSON对象并将其发送到参数中,但如果可能的话,以这种方式发送它会很酷.

Nat*_*ano 310

使用jQuery:

$.post("test.php", { json_string:JSON.stringify({name:"John", time:"2pm"}) });
Run Code Online (Sandbox Code Playgroud)

没有jQuery:

var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/json-handler");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify({name:"John Rambo", time:"2pm"}));
Run Code Online (Sandbox Code Playgroud)

  • 好吧,如果您的帖子正文是JSON,例如({name:"John",时间:"2pm"})如果您的帖子正文是表格urlencoded数据(名称=约翰和时间= 2pm),请使用内容类型application/json使用application /的X WWW窗体-urlencoded (17认同)
  • @ShuruiLiu一个URL代替``/ json-handler"`作为`open()`方法的第二个参数 (6认同)
  • @CIRK:有什么关系?内容类型设置完全是任意的,除非服务器特别处理这一个或另一个.它只是在一天结束时来回流动的数据. (4认同)
  • 但是我可以使用内容类型:`application/x-www-form-urlencoded`如果我使用stringify,那么使用`application/json`是什么意思?:) (2认同)
  • 我应该把网址放在哪里? (2认同)

小智 34

如果您不使用jQuery,请确保:

var json_upload = "json_name=" + JSON.stringify({name:"John Rambo", time:"2pm"});
var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/file.php");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(json_upload);
Run Code Online (Sandbox Code Playgroud)

而对于php接收端:

 $_POST['json_name'] 
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这回答了问题.我相信开发人员希望将一小段JSON发送给PHP作为Content-Type:application/json,而不是包装在urlencoded的包装器中. (8认同)
  • 这并不是真正发送 JSON,而是发送表单数据。你也可以直接发送 JSON,在这种情况下你不能用 $_POST 读取它,而是用 json_decode(file_get_contents('php://input')); 读取它; (2认同)