$ .post()调用的返回值

时间:2011-12-16 09:22:34

标签: javascript jquery ajax post return-value

我有一个jquery $ .post函数,所以:

$.post('/test',json_data, function(data) {
                                result=data
});

这个函数实际上是用在验证中......所以返回值(data)包含true或false。但是这个值没有存储在变量'result'中。我知道这是因为post进行异步调用,因此它不会等待响应。我想问的是,这有什么解决方法吗?或者这个调用能以某种方式同步吗?

2 个答案:

答案 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...
        }
});