3

我有以下代码:

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 相同:它有什么缺点吗?

4

1 回答 1

4

的文档traditional实际上在jQuery.param结束:

从 jQuery 1.4 开始,该$.param()方法递归地序列化深层对象以适应现代脚本语言和框架,例如 PHP 和 Ruby on Rails。您可以通过设置全局禁用此功能jQuery.ajaxSettings.traditional = true;

您是否要使用该标志取决于您的后端将如何反序列化参数。除非您遇到麻烦,否则您可能希望坚持使用默认值false- 但我可能是错的。您应该在您的特定环境中对其进行测试。


更新 - 正如 Kevin 所说,除非您真的知道自己在做什么,否则永远不要使用async: false,因为它会阻止用户的浏览器,直到 AJAX 调用完成。你将无法控制这一点。更好的方法是使用默认设置async: true并显示一个旋转的 GIF 或类似的东西来自己阻止 UI 并让用户知道他们需要等待。

于 2012-10-12T17:35:04.473 回答