我有以下代码:
var params = {
task: task,
pk: pk,
rk: rk,
responses: null
}
var resp = [];
$(".city-checkbox").each(function () {
var i = parseInt(this.id.match(/\d+/)[0], 10);
resp[i] = this.checked;
});
parms.responses = resp;
$.ajax({
type: "POST",
traditional: true,
async: false,
data: parms,
dataType: "json",
[...]
});
我的代码向ASP MVC操作发送POST请求。我查看了jQuery文档,但仍然无法理解传统的做法。有人可以解释我是否真的需要在这里使用它。
与async false相同:它有什么不利之处吗?
答案 0 :(得分:4)
traditional
的文档实际上已在jQuery.param:
从jQuery 1.4开始,
$.param()
方法递归地序列化深层对象,以适应现代脚本语言和框架,如PHP和Ruby on Rails。您可以通过设置jQuery.ajaxSettings.traditional = true;
来全局禁用此功能。
是否要使用该标志取决于后端如何反序列化参数。除非您遇到麻烦,否则您可能希望坚持使用默认值false
- 但我可能错了。你应该在你的特定环境中测试它。
更新 - 正如凯文所说,除非你真的知道自己在做什么,否则你应该从不使用async: false
因为它会阻止用户的浏览器直到AJAX调用完成。你无法控制这一点。更好的方法是使用默认的async: true
并显示旋转的GIF等,以便自己阻止UI并让用户知道他们需要等待。