我有一个jquery $ .post函数,所以:
$.post('/test',json_data, function(data) {
result=data
});
这个函数实际上是用在验证中......所以返回值(data)包含true或false。但是这个值没有存储在变量'result'中。我知道这是因为post进行异步调用,因此它不会等待响应。我想问的是,这有什么解决方法吗?或者这个调用能以某种方式同步吗?
答案 0 :(得分:4)
这被认为是一种不好的做法,但$.ajax()
中有一个async
参数,您可以设置为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
}
}
答案 1 :(得分:2)
检查回调内的有效性
$.post('/test',json_data, function(data) {
var result=data;
if(result === true) {
// do some ok processing...
} else {
// do not ok processing...
}
});