我一直在谷歌上搜索这个并避免在我的错误修复列表中出现这个错误很长时间了,但我终于到达了列表的末尾,最后我必须让函数返回 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/