javascript - 如何使 jquery "$.post"请求同步

标签 javascript jquery html

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

我正在使用 ajax 将某些字段与数据库中已经存在的字段进行比较,默认情况下 $.post() 方法会异步执行它的操作。

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

最佳答案

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
});

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

这里有 $.ajax() 参数的完整详细信息:jQuery.ajax() – jQuery API Documentation .


jQuery >=1.8 "async:false"弃用通知

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

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

请查看this answer举个例子。

关于javascript - 如何使 jquery "$.post"请求同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821380/

相关文章:

php - 源代码和检查元素输出的差异(以及网页的行为)

java - 从网站解析 JSON 时出现 SocketTimeoutException

javascript - CSS 分别为每个列表项设置动画

javascript - 单击上方的行时插入表格行

Javascript OOP : loosing "this" and take last object created instead (jsfiddle sample)

jquery - 图像在旋转时未在 div 内调整大小

javascript - 用js加载本地.csv,用d3.js处理

javascript - PhantomJS:确保响应对象在 server.listen(...) 中保持事件状态

javascript - 避免浏览器中涉及 Ajax 事件的弹出 block 的最佳实践

javascript - 更改目标答案