无法通过AJAX将JSON作为字符串发送

所以我试图将JSON作为字符串发送。 然后我有一个PHP后端,它检索这个JSON字符串并使用json_decode解析它。

不幸的是,我无法将此JSON作为字符串发送。

这是我使用的jQuery Ajax脚本:

 var jsonString = JSON.stringify(checkables); console.log(jsonString); $.ajax({ url: $url, type: 'POST', data: {ajaxidate: JSON.stringify(jsonString)}, contentType: "application/json; charset=UTF-8", success: function (data) { // just successful callback }, error: function () { // just error callback } }); 

变量checkables包含原始forms作为JSON数据: checkables_data

应用JSON.stringify() ,现在看起来如下: [{"name":"name","type":"multialphanumslug","value":"AD"},{"name":"server","type":"host","value":"10.1.1.1"},{"name":"port","type":"number","value":"8080"},{"name":"authid","type":"username","value":"barryallen"}]

在后端,我有这个PHP脚本:

  

现在我想后端的$ _​​POST现在应该包含这个:

array(’ajaxidate’=>“[{\”name \“:\”name \“,\”type \“:\”multialphanumslug \“,\”value \“:\”AD \“},{\”名\ “:\” 服务器\”,\ “类型\”:\ “宿主\”,\ “值\”:\ “10.1.1.1 \”},{\ “名称\”:\ “端口\”, \ “类型\”:\ “号码\”,\ “值\”:\ “8080 \”},{\ “名称\”:\ “AUTHID \” \ “类型\”:\ “用户名\”, \“价值\”:\“barryallen \”}]“);

但它没有收到任何东西。 这是捕获的请求:

在此处输入图像描述

后端的回应?

在此处输入图像描述

我尝试使用POSTMan,我收到了预期的正确输出:

在此处输入图像描述

那太荒谬了。

我坚持了两天,试图弄清楚发生了什么或者我错过了什么。 任何帮助将不胜感激。

您需要解析服务器上的数据:

 $myArray = json_decode($_POST['ajaxidate']); var_dump($myArray); 

考虑一下:

  

输出:

 string(10) "[{"a": 1}]" array(1) { [0]=> object(stdClass)#1 (1) { ["a"]=> int(1) } } 

dataType: 'json' ,tldr:使用它!

设置dataType = json时,告诉jQuery服务器的响应应该被解释为JSON,然后它会为你解析它,并将解析后的对象/数组作为成功回调的第一个参数:

 $.ajax({ // ... dataType: 'json', success: function(myJson) { console.log(myJson); // this will be a JSON object/array... } }); 

正如你在你的ajax调用中提到的dataType: json调用数据需要在json JSON.stringify但是使用JSON.stringify将Json对象转换为json字符串,因为你需要更改make的问题

  `var jsonString = JSON.stringify(checkables);` 

  var jsonString = checkables; 

JSON.stringify()

解决了我自己的问题。 让@Munna建议使用$ .post()让我想出消除不必要的东西。 从这种情况来看,$ .ajax()中不必要的是contentType选项。

这是更新的工作解决方案:

 $.ajax({ url: $url, type: 'POST', data: {ajaxidate: JSON.stringify(jsonString)}, success: function (data) { // just successful callback }, error: function () { // just error callback } }); 

谢谢所有帮助过的人。 祝你有美好的一天