我有一个表单,可以使用AJAX将图像上传到PHP脚本
这是我的表格
<form action ="upload.php" method = "POST" enctype = "multipart/form-data" class = "form-horizontal" name="formData" id="data"> <!--File Upload--> <div class = "form-group"> <label class="control-label col-sm-1" for = "file">File:</label> <div class="col-sm-9"> <input type = "file" name = "image_file" id = "image_file" class = "form-control" accept="image/*" onChange="autoPull(this.value)";> </div> </div> <div class = "form-group"> <label class="control-label col-sm-1" for = "project_name">ProjectName:</label> <div class="col-sm-9"> <input type = "text" name ="project_name" id = "project_name" class = "form-control" placeholder="Enter Project Name" value = "" required> </div> </div> <div class = "button"> <div class="form-group"> <div class="col-sm-offset-1 col-sm-6"> <input type="submit" name = "submit" class="btn btn-primary" value = "Submit" id="file_upload"> <input type="reset" name = "submit" class="btn btn-default" value = "Reset"> </div> </div> </div> </form> <br/> <div class="progress" style="display:none;"> <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%;"> </div> </div> <div id = "result"></div>
结果div是显示PHP输出的位置(请参见AJAX)
进度栏是我希望看到引导进度栏的地方。
这是我的AJAX
$(function () { $('form#data').submit(function (e){ e.preventDefault(); e.stopImmediatePropagation(); var formData = new FormData($(this)[0]); var file = $('input[type=file]')[0].files[0]; formData.append('upload_file',file); $('.progress').show(); $.ajax({ xhr: function() { var xhr = new window.XMLHttpRequest(); xhr.upload.addEventListener("progress", function(evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; percentComplete = parseInt(percentComplete * 100); $('.progress-bar').css('width',percentComplete+"%"); $('.progress-bar').html(percentComplete+"%"); if (percentComplete === 100) { } } }, false); return xhr; }, type:'POST', url: 'upload.php', data: formData, async:false, cache:false, contentType: false, processData: false, success: function (returndata) { $('#result').html(returndata); } }); return false; }); });
现在,我得到一个输出,向我显示PHP中回显的数据。但是由于某种原因,我无法使进度条正常工作。
可能是什么问题?
去除
async : false;
解决了。但我现在需要看看如何重置标准。