【发布时间】:2019-12-30 15:53:11
【问题描述】:
在使用jQuery.ajax 函数时,使用JSON.stringify() 发布复杂对象与简单地允许数据的默认url 编码相比有什么区别或优势?
我发布到的 MVC WebApi 能够正确路由和解析这两个请求,因此不需要“显式”将 JSON 发送到服务器。
此外,由于在服务器上启用了 CORS,因此发布 json 会发出一个预检 OPTIONS 请求(我明白为什么......这不是我的问题),而使用默认编码则不会,因此节省了一个网络调用从性能的角度来看,似乎'是有利的。
这两个 ajax 调用都有效。我已经用一个对象进行了测试,该对象还包含一个嵌入式子对象和一个嵌入式数组:
var item = {
Name: "Joe",
Team: "Yankees",
Vitals: { Age: 21, Height: "6'0" },
Positions: ["1st", "Right", "DH"]};
// using default url-encoding
$.post(apiUri, item)
.done(function () {alert("Done");})
.fail(function () {alert("Fail");});
// posting a json string
$.ajax({
url: apiUri,
contentType: "application/json",
data: JSON.stringify(item),
type: "POST"
})
.done(function () {alert("Done");})
.fail(function () {alert("Fail");});
但是,许多 ajax 到 web-api 的示例似乎更倾向于将数据作为 json 字符串发布。
指南或建议?
【问题讨论】:
标签: jquery json ajax asp.net-web-api