how to make a jquery “$.post” request synchronous
本问题已经有最佳答案,请猛点这里访问。
我已经在google上搜索了很长一段时间,并避免了我的bug修复列表中的这个错误,但是我终于到达了列表的末尾,最后一个函数必须返回true/false来说明验证是否成功。
我使用Ajax将某些字段与已经存在于数据库中的字段进行比较,默认情况下,
我在调用
jQuery<1.8
我建议您使用
如果您打电话给
1 | $.post( url, data, success, dataType ); |
你可以把它变成它的
1 2 3 4 5 6 7 8 | $.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType, async:false }); |
请注意
这里您有一个完整的
jquery>=1.8"async:false"折旧通知
jquery>=1.8不会在HTTP请求期间阻塞UI,因此我们必须使用变通方法来停止用户交互,只要请求被处理。例如:
- 使用插件,如blockui;
- 在调用
$.ajax() 之前手动添加一个覆盖,然后在调用ajax.done() 回调时删除它。
请以这个答案为例。
如果需要同步请求,请将该请求的
从jquerydocs:您将async选项指定为false以获取同步Ajax请求。然后您的回调可以在您的母亲函数继续之前设置一些数据。
如果按照建议进行更改,您的代码将如下所示:
1 2 3 4 5 6 7 8 9 10 | beforecreate: function(node,targetNode,type,to) { jQuery.ajax({ url: url, success: function(result) { if(result.isOk == false) alert(result.message); }, async: false }); } |
这是因为$.Ajax是唯一可以为其设置异步性的请求类型。