Javascript 如果使用AjaxSubmit,jQuery AJAX进度条会卡住,赢得';没有它,我根本无法工作
首先,如果我遗漏了一些明显的东西,请提前道歉,我已经环顾了四周,只是无法理解这一点 我有一个提供进度条的上传表单,它基于本教程: 除了我尝试使用jQuery插件在灯箱中显示进度条外: 进度条会出现,但会停留在18%(处理的字节数:921420),而不管上传的文件大小如何(这对我来说没有任何意义)。 我检查了PHPINFO,它显示: 上传最大文件大小:4096K 贴子最大尺寸:4096K 如果我删除$('#fileUpload').ajaxSubmit();e、 预防默认值()行,然后出现进度条,重复调用间隔,但从未调用getJSON,进度条未更新。然而,该文件可以完美地上传 javascript是:Javascript 如果使用AjaxSubmit,jQuery AJAX进度条会卡住,赢得';没有它,我根本无法工作,javascript,php,jquery,Javascript,Php,Jquery,首先,如果我遗漏了一些明显的东西,请提前道歉,我已经环顾了四周,只是无法理解这一点 我有一个提供进度条的上传表单,它基于本教程: 除了我尝试使用jQuery插件在灯箱中显示进度条外: 进度条会出现,但会停留在18%(处理的字节数:921420),而不管上传的文件大小如何(这对我来说没有任何意义)。 我检查了PHPINFO,它显示: 上传最大文件大小:4096K 贴子最大尺寸:4096K 如果我删除$('#fileUpload').ajaxSubmit();e、 预防默认值()行,然后出现进度条,
<script>
var interval_id = 0;
$(document).ready(function(){
//jquery form options
var options = {success: stopProgress, error: stopProgress};
//Add the submit handler to the form
$('#fileUpload').submit(function(e){
if($('#selectedFile').val() == ''){alert('File Not Found'); e.preventDefault();return;}//check there is at least one file
var html = $('<h2>Progress</h2><div class="progress progress-striped active"><div class="progress-bar progress" role="progressbar" aria-valuenow="85" aria-valuemin="0" aria-valuemax="100" id="progress"><span class="sr-only">50% Complete (success)</span> </div></div><p id="progress-txt"></p>');
$.lightbox(html, {width : 350,height : 150});
interval_id = setInterval(function() { //Poll the server for progress
$.getJSON('progress.php', function(data){
if(data){ //if there is some progress then update the status
$('#progress').width((data.bytes_processed / data.content_length) * 100 + '%');
$('#progress-txt').html('Uploading '+ Math.round((data.bytes_processed / data.content_length)*100) + '%');
}else{//When there is no data the upload is complete
$('#progress').width('100%');
$('#progress-txt').html('Complete');
stopProgress();
}
})}, 300);
$('#fileUpload').ajaxSubmit();
e.preventDefault();
});
});
function stopProgress(){clearInterval(interval_id);}
</script>
var间隔_id=0;
$(文档).ready(函数(){
//jquery表单选项
var options={success:stopProgress,error:stopProgress};
//将提交处理程序添加到表单中
$('#fileUpload')。提交(函数(e){
如果($('#selectedFile').val()=''){alert('File Not Found');e.preventDefault();return;}//检查至少有一个文件
var html=$('Progress50%完成(成功));
$.lightbox(html,{宽:350,高:150});
interval\u id=setInterval(函数(){//轮询服务器以了解进度
$.getJSON('progress.php',函数(数据){
如果(数据){//如果有一些进展,则更新状态
$(“#进度”).width((data.bytes_processed/data.content_length)*100+“%”);
$('#progress txt').html('上传'+Math.round((data.bytes_processed/data.content_length)*100)+'%');
}else{//当没有数据时,上载完成
$(“#进度”).width('100%);
$('#progress txt').html('Complete');
stopProgress();
}
})}, 300);
$('#fileUpload').ajaxSubmit();
e、 预防默认值();
});
});
函数stopProgress(){clearInterval(interval_id);}
HTML表单为:
<form action="index.php" method="post" enctype="multipart/form-data" class="form-horizontal col-md-12" id="fileUpload">
<input type="file" class="form-control" placeholder="Select File" name="selectedFile" id="selectedFile" required />
<button type="submit">Save This Download</button>
</form
保存此下载
向所有花时间阅读本文的人道歉——我在表格中遗漏了一个隐藏的关键字段。我从头到尾又一次仔细研究了整件事,发现了它:
“value=”upload“/>我希望能够在不使用“ajaxsubmit”和“preventDefault”的情况下让进度条正常工作,这样,如果JavaScript中出现意外问题或错误,它只会影响进度条,上传完成,页面刷新(有点优雅的降级):-)我假设ajaxSubmit正在阻止getJSON工作?