我已编写代码来上传已调整大小的照片。这是html表单:
<form action="aa.php" method="post" id="uploadImageForm" enctype="multipart/form-data">
<input type="file" id="fileToUploadId" name="fileToUpload[]" accept="image/jpeg, image/png" multiple />
<input type="submit" value="Upload Image" name="submit">
</form>
在提交时,我正在运行此JavaScript:
$('#uploadImageForm').on('submit', function(e){
e.preventDefault();
var ds = [];
var files = document.getElementById("fileToUploadId").files;
for (var i in files) {
if (typeof files[i] !== 'object') return false;
resize.photo(files[i], 1200, 'file', function (resizedFile) {
var resizedSize = resizedFile.size;
ds.push(resizedFile);
});
alert('for loop working'); //getting executed for each itteration
}
alert('final alert'); //not getting executed
console.log(ds);
});
但是for循环之后的代码没有被执行。对于照片数量的警报“for loop working”按预期显示,但不是“最终警报”。
请注意,照片大小调整会按预期进行,并且我在此处未包含一些脚本文件。但是控制台中没有错误。 我已经在chrome和firefox中运行了代码,两者都提供了相同的输出。
最后一件事是因为我在提交时运行此JavaScript,页面不会按预期转到aa.php
。
答案 0 :(得分:4)
如果您的函数返回,它不会继续执行其余代码。看看这一行:
if (typeof files[i] !== 'object') return false;
这里返回整个函数,终止执行。请尝试使用continue
语句,这将停止当前迭代并转到下一个。
答案 1 :(得分:1)
如果if (typeof files[i] !== 'object') return false;
被触发,它将停止执行您的功能,这意味着alert('final alert');
永远不会发生。