在表单提交的情况下,我有一个 jquery ajax 函数,用于查询从文件上传的数据量,我可以使用该文件制作进度条。这是我的 js 文件:
var submitted = '';
var counter = 0;
$('#webfileuploadform').submit(function(){
if(submitted == 'submitted') return false; // prevents multiple submits
var freq = 1000; // freqency of update in ms
var progress_url = '/upload_progress/' + $('#id_progress_id').val(); // ajax view serving progress info
update_progress_bar();
function update_progress_bar(){
$.ajax({
dataType:"json",
url: progress_url,
success: function(data){
counter ++
console.log('hit success ' + counter);
},
complete: function(jqXHR, status){
if (status == 'success'){
console.log('hit complete', status == success')
} else {
console.lot('hit complete', status == something else')
}
}
});
setTimeout(function(){update_progress_bar()}, freq);
}
submitted = 'submitted'; // marks form as submitted
});
因此,用户将使用表单选择文件,然后单击提交。这一切都发生得很好。表单提交,文件上传,当我在单独的选项卡中打开我的 ajax 视图并不断刷新它时,进度显示得很好。我不明白为什么 update_progress_bar 函数会运行一次,直到我停止页面。我将上传一个文件,但在我单击浏览器上的“x”之前,我不会在控制台中获得任何“命中成功”。在我点击停止后,控制台吐出“命中成功”加上计数器。但我不应该停下来做这件事。当文件上传时,我需要它来工作。
任何想法我的问题是什么?
**
编辑
**
不确定它是否有区别,但我在 django 开发服务器上做这一切。我认为在同一个会话中使用两个 XMLHTTPRequest 应该没有问题。