在使用JSON.stringify()函数时,使用jQuery.ajax发布复杂对象与简单地允许数据的默认url编码有什么不同或优势?我发布的MVC WebApi能够正确地路由和解析两个请求,因此不需要向服务器发送JSON。此外,由于在服务器上启用了CORS,所以发布json会发出一个飞行前选项请求(据我所知,why...that不是我的问题),而使用默认编码则不会,从而节省了一个从性能角度来看“似乎”有利的网络调用。
这两个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示例似乎倾向于将数据作为json字符串发布。
指导方针还是建议?
发布于 2014-07-11 22:06:58
使用JSON.stringify()发布JSON与使用jQuery.ajax函数对数据进行默认url编码有什么不同或优势?
由于您缺少了内容类型,这实际上是不太可比的。换句话说,将JSON发布为x-www-form-urlencoded根本不起作用。因此,我将调整你的问题,使之更加具体:
使用JSON.stringify()将内容类型设置为
application/json的JSON与使用jQuery.ajax函数的数据的默认url编码(x-www-form-urlencoded/Querystring)相比有什么区别或优势?
在我看来(但仍然是事实),最大和最有益的优势是,当您使用JSON而不是Form Querystring时,正确地使用默认模型绑定将值绑定到类所需的工作量是最小的。假设web使用与MVC相同的模型绑定(我非常肯定它使用),绑定表单值可以是很乏味,很难调试。在张贴简单的名称值对时,情况往往不是这样。
https://stackoverflow.com/questions/24707166
复制相似问题