我有一个上传表单,发布到隐藏的iframe。我试图从iframe调用父页面上的函数,但是收到错误“top.stopUpload不是函数”。
这样做的正确方法是什么?
父母页面:
$(document).ready(function() {
$('#document_upload').submit( function() {
$('#upload_progress').show();
});
function stopUpload(success){
if (success == 1){
$('#result', window.parent.document).html(
'<span class="msg">The file was uploaded successfully!<\/span>');
}
else {
$('#result', window.parent.document).html(
'<span class="emsg">There was an error during file upload!<\/span>');
}
$('#upload_progress').hide();
return true;
}
})
IFRAME:
$(document).ready(function() {
top.stopUpload(<?php echo $result; ?>);
}
答案 0 :(得分:1)
您的stopUpload()
函数的范围限定为您传递给$(document).ready()
的匿名函数。
您需要确保其范围对iframe
可见。一种方法是将函数分配给window
,即浏览器中的全局对象。
另一种方法是在匿名函数之外的全局代码中创建函数。
答案 1 :(得分:1)
试试这个:
var myGlobalObject = {};
myGlobalObject.stopUpload = function(success){
if (success == 1){ /*...*/}
//...
};
$(document).ready(function() {
//...
});
来自您的iframe:
$(document).ready(function() {
parent.myGlobalObject.stopUpload(<?php echo $result; ?>);
});