加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用ajaxSubmit进行异步调用 – jquery.form

发布时间:2020-12-16 02:49:32 所属栏目:百科 来源:网络整理
导读:我有一个表格有一定的行动.提交表单时,我发送一个调用此操作的ajax调用.另一方面,我发送另一个ajax调用来更新进度.我这样做了: $("form").submit(function() { function callBack() { if( (this.readyState == 4) (this.status == 200) ) { console.log(thi
我有一个表格有一定的行动.提交表单时,我发送一个调用此操作的ajax调用.另一方面,我发送另一个ajax调用来更新进度.我这样做了:

$("form").submit(function() {               
      function callBack()
      {
            if( (this.readyState == 4) && (this.status == 200) )
            {
              console.log(this.responseText);
            }
      }

      function updateProgress (){
        asyncReq('/get_progress?progress='+progress,callBack);
      }

      function asyncReq(url,functionCallBack)
      {
            var request; //request must be a local var to avoid race condition
            try
            {   //for modern browsers
              request = new XMLHttpRequest;
            }
            catch (err)
            {// legacy IE
              request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            request.onreadystatechange = callBack;
            request.open("GET",url,true);
            request.send();
      };
      var progress = $("#progress").val();
      asyncReq('/get_progress?progress='+progress,callBack);
      setTimeout(updateProgress,2000);
      $(this).ajaxSubmit({async: true});
      return false;
   });

我在这里有2个异步javascript调用,一个用于提交表单,另一个用于更新进度.当我在callBack中打印出responseText时,我只能看到0.0和1.0.这是在调用ajaxSubmit()之前和完成之后的那个.我想在中间获得所有进步的价值.据我所知,只有在ajaxSubmit完成后才会调用asyncReq的第二个ajax调用.任何人都可以告诉我在ajaxSubmit()完成之前如何进行另一个完整的ajax调用?

注意:

表单由文件字段和ajaxSubmit解压缩组成,处理文件并在处理完每个文件后更新进度表. get_progress方法提取该表的进度值.我使用jquery.form.js通过ajax调用提交表单.

解决方法

我不清楚你试图实现的目标.但是,这是您的代码的简化版本.

function updateProgress(){
    var progress = $("#progress").val();
    $.get('/get_progress?progress='+progress,function(data){
        //***you will get response in data
        //here you write how to handle progress and data
    }
    setTiemout('updateProgress()',2000)

}
$('form').submit(function(){
    updateProgress();
    $(this).ajaxSubmit({async: true});
})

我不确定ajaxSubmit()函数实际上为你做了什么!顾名思义,我猜它只是提交表格.现在,如果您想将自己的逻辑用于显示进度,那么您只需将该逻辑放在***标记区域即可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读