如何使jquery“$.post”请求同步

2022-08-30 01:53:27

很长一段时间以来,我一直在谷歌搜索此错误并避免在我的错误修复列表中出现此错误,但我终于到达了列表的末尾,其中最后一个我必须使函数返回true/false以说明验证是否成功。

我使用ajax将某些字段与数据库中已有的字段进行比较,默认情况下,该方法以异步方式执行其操作。$.post()

我在调用中设置了一个变量,调用方法因此没有得到响应,所以我所有的js / jquery在pageLoad上都失败了...我宁愿我仍然能继续使用这种方法。onSuccess$.post


答案 1

jQuery < 1.8

我是否可以建议您使用而不是因为它更具可定制性。$.ajax()$.post()

如果您正在呼叫 ,例如,如下所示:$.post()

$.post( url, data, success, dataType );

你可以把它变成它的等价物:$.ajax()

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType,
  async:false
});

请注意参数对象末尾的 。async:false$.ajax()

这里有一个完整的参数细节:jQuery.ajax() – jQuery API Documentation$.ajax()


jQuery >=1.8 “async:false” 弃用通知

jQuery >=1.8 不会在 http 请求期间阻止 UI,因此只要处理了请求,我们就必须使用解决方法来停止用户交互。例如:

  • 使用插件,例如BlockUI;
  • 在调用 之前手动添加覆盖,然后在调用 AJAX 回调时将其删除。$.ajax().done()

请看一下这个答案的例子。


答案 2

如果需要同步请求,请将该请求的属性设置为 。查看 jQuery AJAX Docasyncfalse