$.post('/test',json_data, function(data) {
result=data
});
此函数实际上是在验证中使用的…因此它的返回值(数据)包含true或false.但是此值未存储在变量“结果”中.我知道这是因为post进行了异步调用,因此它不等待响应.我想问的是,是否有一些解决方法?还是可以通过某种方式使此调用同步?
解决方法:
这被认为是不好的做法,但是$.ajax()
中有一个异步参数,您可以将其设置为false并同步等待结果:
var result;
$.ajax({
type: 'POST',
url: '/test',
data: json_data,
async: false,
success: function(data) {
result=data;
},
dataType: 'application/json'
});
//result available here
虽然在这种情况下不太方便,但更惯用的是利用回调:
function validate(okCallback, errorCallback) {
$.post('/test',json_data, function(data) {
if(data) {
okCallback();
} else {
errorCallback();
}
});
}
validate(
function() {
//proceed
},
function() {
//display validation error
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。