我使用iframe上传图片,但iframe的javascript函数未被调用。实际上,如果iframe的名称/ id是" upload",那么在javascript函数中调用if(success)参数,但if(fail)参数不是。如果我将iframe的名称/ id更改为其他内容,则调用任一参数。名称/ ID甚至不应该影响javascript?当我第一次构建它时,只调用了if(fail)参数,而不是成功的参数。我不知道发生了什么。
我的表格:
<form id="profileForm" method="post" action="build/parsers/upload-photo.php" enctype="multipart/form-data" target="newphoto">
<input type="hidden" name="kind" value="profile" />
<input type="file" name="photo" id="profileSelect" onchange="uploadPhoto();" />
<button id="profileUpload" onclick="document.getElementById('profileSelect').click(); return false;" type="submit"><i class="fa fa-camera"></i> <span>Upload Profile Picture</span></button>
</form>
uploadPhoto()函数:
function uploadPhoto() {
$('#profileForm').submit();
$('#photo').html("<div style='background: #dadada;'><img src='build/images/loading.gif' /></div>");
}
iframe:
<iframe name="newphoto" id="newphoto" onload="stopPhoto('<?php echo $username ?>');"></iframe>
stopPhoto(),即 NOT WORKING
function stopPhoto(user) {
var iframe = document.getElementById('newphoto');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var fail = innerDoc.getElementById('fail');
var success = innerDoc.getElementById('success');
var file = success.innerHTML;
var error = fail.innerHTML;
if(fail != null) {
$('#photo').html("");
$('#alert').css('display', 'block').html(error);
setTimeout(function () {
$('#alert').fadeOut();
}, 3000);
}
if(success != null) {
$('#photo').html("<div style=\"background: url('users/"+user+"/profile/m/"+file+"') center no-repeat;\"></div>'");
}
}
我的PHP文件将输出iframe中的两个div之一:
<div id="success">name.jpg</div>
<div id="fail">Error message</div>
为什么我的stopPhoto()函数无法正常工作?只调用它的一些部分,我唯一注意到的是iframe的名称/ ID确定哪些有效,哪些无效。请帮忙!