1

我试图将一个使用 json 数据的 API 放在一起,但我在保留变量类型时遇到了问题。

警告:我正在使用 Node.js

给定数据:

{
  id: "string",
  data: [
    {input: [0,1,0], output: [1,1]},
    {input: [1,0,0], output: [1,0]}
  ]
}

当我使用该数据发出 jquery ajax 发布请求时,它被传输为:

data[0][input][]    0
data[0][input][]    1
data[0][input][]    0
data[0][output][]   1
data[0][output][]   1
data[1][input][]    1
data[1][input][]    0
data[1][input][]    0
data[1][output][]   1
data[1][output][]   0
id                  string

或者:id=string&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Binput%5D%5B%5D=1&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Boutput%5D%5B%5D=0

我需要做的是在服务器端解码数据,但我的数组中的所有值 data 都被转换为 strings

是否有保留值类型的技术,即:“string”或“int”等?

我目前正在使用qsnpm 上的模块来解析我的 POST 请求正文。

4

3 回答 3

3

JQuery 将dataAJAX 请求选项中传递的任何对象序列化为application/x-www-form-urlencoded格式(就像查询字符串一样)。您想要的是JSON.stringify()您的对象并将结果字符串作为 传递data,同时将 设置Content-Type为前面的答案提到的。

请记住,该dataType选项指定 jQuery 应该如何处理对请求的响应,而不是如何编码请求的主体(我已经被这个烧毁了)。

于 2012-05-29T04:01:34.400 回答
1

由于它是 JSON 服务器,请在 POST 请求中设置 Content-Type: application/json,这样您将解析对象而不是字符串。该对象将保留数据类型。在服务器上使用 req.is('application/json') 以确保请求的类型为 'application/json'。

于 2012-05-28T17:06:35.097 回答
0

这是一个可行的解决方案,希望对您有所帮助。

$.ajax({
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json',
    url: 'http://localhost:3000/endpoint',                      
    success: function(data) {
        //TODO: do something with data   
    }
});
于 2013-10-23T06:09:30.397 回答