我已经搜索了很长一段时间并避免了这个错误出现在我的错误修复列表中,但最终我到达了列表的末尾,其中我必须使一个函数返回true/false来说明验证是否成功。
我正在使用ajax来将某些字段与已经存在于数据库中的字段进行比较,而默认情况下$.post()
方法会异步执行它的操作。
我正在onSuccess
调用中设置一个变量,但由于这个原因,调用方法没有得到响应,因此我的所有js/jquery都无法在页面加载时运行... 我希望仍然可以继续使用$.post
方法。
我已经搜索了很长一段时间并避免了这个错误出现在我的错误修复列表中,但最终我到达了列表的末尾,其中我必须使一个函数返回true/false来说明验证是否成功。
我正在使用ajax来将某些字段与已经存在于数据库中的字段进行比较,而默认情况下$.post()
方法会异步执行它的操作。
我正在onSuccess
调用中设置一个变量,但由于这个原因,调用方法没有得到响应,因此我的所有js/jquery都无法在页面加载时运行... 我希望仍然可以继续使用$.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请求期间阻止用户界面,因此我们必须使用解决方法来停止用户交互,直到请求处理完毕。例如:
$.ajax()
之前手动添加覆盖层,然后在调用AJAX .done()
回调时将其删除。根据Jquery文档,您可以将async选项设置为false以获取同步的Ajax请求。然后,您的回调函数可以在主函数继续之前设置一些数据。
如果按照建议更改代码,您的代码将如下所示:
beforecreate: function(node,targetNode,type,to) {
jQuery.ajax({
url: url,
success: function(result) {
if(result.isOk == false)
alert(result.message);
},
async: false
});
}