$ .post()调用的返回值


                    

我有一个jquery $ .post函数,例如:</ p>

  $。post('/ test',json_data,function(data){
                                 结果=数据
});
</ code> </ pre>

此函数实际上是在验证中使用的...因此它的返回值(数据)包含true或false。 但是,此值未存储在变量“结果”中。 我知道这是因为post进行了异步调用,因此它不等待响应。 我想问的是,是否有一些解决方法? 还是可以通过某种方式使该调用同步?</ p>
     </ div>

展开原文

原文

I have a jquery $.post function lik so:

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

this function is actually being used in an validation...So it the return value(data) contains true or false. But this value is not being stored in the variable 'result'. I understand that this is because post makes an asynchronous call and hence it does'nt wait for the response. What I want to ask is, is there some workaround for this? or can this call be made synchronous somehow??

2个回答


在回调内检查有效性</ p>

  $ .post('/ test',json_data,function(data){
     var result = data;
     if(result === true){
         //做一些好的处理...
         }其他{
         //不正确处理...
         }
});
</ code> </ pre>
     </ div>

展开原文

原文

Check for validity inside the callback

 $.post('/test',json_data, function(data) {
    var result=data;
    if(result === true) {
        // do some ok processing...
        } else {
        // do not ok processing...
        }
});


这被认为是不好的做法,但是 <中有一个 async </ code>参数 code> $。ajax()</ code> ,您可以将其设置为 false </ code>并同步等待结果:</ p>

  var结果;
$ .ajax({
   输入:“ POST”,
   网址:“ / test”,
   数据:json_data,
   异步:错误,
   成功:功能(数据){
     结果=数据;
   },
   dataType:“应用程序/ json”
});
//结果在这里
</ code> </ pre>

更惯用的方法(虽然在这种情况下不太方便)是利用回调:</ p>

 功能validate(okCallback,errorCallback){
     $ .post('/ test',json_data,function(data){
         if(data){
             okCallback();
         }其他{
           errorCallback();
         }
     });
}

验证(
     function(){
         //继续
     },
     function(){
         //显示验证错误
     }
}
</ code> </ pre>
     </ div>

展开原文

原文

This is considered a bad practice but there is an async parameter in $.ajax() that you can set to false and wait synchronously for a result:

var result;
$.ajax({
  type: 'POST',
  url: '/test',
  data: json_data,
  async: false,
  success: function(data) {
    result=data;
  },
  dataType: 'application/json'
});
//result available here

A more idiomatic, although slightly less convenient in this case, would be to take advantage of callbacks:

function validate(okCallback, errorCallback) {
    $.post('/test',json_data, function(data) {
        if(data) {
            okCallback();
        } else {
          errorCallback();
        }
    });
}

validate(
    function() {
        //proceed
    },
    function() {
        //display validation error
    }
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐