我有一个表格有一定的行动.提交表单时,我发送一个调用此操作的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()函数实际上为你做了什么!顾名思义,我猜它只是提交表格.现在,如果您想将自己的逻辑用于显示进度,那么您只需将该逻辑放在***标记区域即可.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。