javascript - Ajax HTTP 请求使用请求正文中的数组更改 JSON

标签 javascript jquery json ajax httpresponse

HTTP 请求的 JSON 响应正文在服务器端被扭曲。它有一个键,其元素是一个数组。这是我使用 jQuery ajax 的 HTTP 请求:

function dbInsert(event_arr) {
    $.ajax({
        url: "http://localhost:5000/insertdata",
        type: "POST",
        data: JSON.stringify(event_arr),
        success: function(events) {
            console.log("TestInsert was successfully executed");
        },
        error: function(textStatus, errorThrown) {
            console.error("The following error occurred: " + textStatus, errorThrown);
        }
    });

当我将 JSON.stringify(event_arr) 打印到控制台时,如下所示:

{"results": [{"event_client": "name1","event_date": "date1"}, {"event_client": "name2", "event_date": "date2"}]}

然后,在服务器端,以下是我理解响应正文并使用 JSON 格式的各种尝试:

// returns [object, Object], cannot be passed into JSON.parse
console.log(request.body);

var temp = JSON.stringify(request.body); 
var temp2 = JSON.parse(temp); 

// prints {"{\"results\":":{"{\"event_name\":\"name1\",\"event_date\":\"date1\"},{\"event_name\":\"name2\",\"event_date\":\"date2\"}":""}}
console.log(temp);

// prints { '{"results":': { '{"event_name":"name1","event_date":"date1"},{"event_name":"name2","event_date":"date2"}': '' } }
console.log(temp2);

在我的 dbInsert() 中调用的 JSON.stringify() 似乎搞乱了 JSON 的读取方式,而且我不知道如何解决这个内部格式错误!

最佳答案

您需要在 $.ajax({}) 函数中设置:contentType: "application/json"

类似这样的事情:

function dbInsert(event_arr) {
  $.ajax({
    url: "http://localhost:5000/insertdata",
    type: "POST",
    data: JSON.stringify(event_arr),
    contentType: "application/json",
    success: function(events) {
      console.log("TestInsert was successfully executed");
    },
    error: function(textStatus, errorThrown) {
      console.error("The following error occurred: " + textStatus, errorThrown);
    }
  });
}

关于javascript - Ajax HTTP 请求使用请求正文中的数组更改 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45619197/

相关文章:

java - 谁在 Spring MVC 中设置请求内容类型

c# - 客户端反序列化为数组序列化字典<string,string>数据

javascript - Jquery:选择页面上的所有H2标签,将这些H2标签的文本复制到列表中

嵌套在数组中的 Javascript 对象

jquery - typeahead.js 未返回所有结果

C++ rest sdk POST 表单数据json

php - 重命名 javascript 对象以使用 php 数组

javascript - 如何在响应式设计中防止文本超过 svg?

jquery - 如何根据特定条件仅获取一个元素?

javascript - Wit.ai POST/带有 HTTP 请求的语音