微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐