编程语言
首页 > 编程语言> > javascript-$.post()调用的返回值

javascript-$.post()调用的返回值

作者:互联网

我有一个jQuery $.post函数,就像这样:

$.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
    }
}

标签:javascript,jquery,ajax,return-value,post
来源: https://codeday.me/bug/20191013/1910013.html