我试图整理一个会消耗json数据的API,而且我在保留变量类型方面遇到了问题。
警告:我正在使用Node.js鉴于数据:
{
id: "string",
data: [
{input: [0,1,0], output: [1,1]},
{input: [1,0,0], output: [1,0]}
]
}
当我使用该数据发出jquery ajax post请求时,它被转换为:
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
我需要做的是解码服务器端的数据,但 数据中所有数组的值都转换为字符串 。
是否有保留值类型的技术,即:“string”或“int”等?
我目前正在使用npm上的qs
模块来解析我的POST请求正文。
答案 0 :(得分:3)
JQuery将在AJAX请求的data
选项中传递的任何对象序列化为application/x-www-form-urlencoded
格式(就像查询字符串一样)。您想要的是JSON.stringify()
您的对象,并将结果字符串作为data
传递,并将Content-Type
设置为上一个答案提及。
请记住,dataType
选项指定jQuery应如何处理请求的响应,而不是如何对请求的主体进行编码(我已经被这个烧毁了)
答案 1 :(得分:1)
由于它是JSON服务器,因此在POST请求中设置Content-Type:application / json,因此您将解析对象而不是字符串。该对象将保留数据类型。在服务器上使用req.is('application / json')以确保请求的类型为'application / json'。
答案 2 :(得分:0)
这是一个有效的解决方案,希望它有所帮助。
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
url: 'http://localhost:3000/endpoint',
success: function(data) {
//TODO: do something with data
}
});