如何使用jQuery从iframe调用父页面上的函数?

时间:2011-11-30 01:46:22

标签: jquery ajax function iframe

我有一个上传表单,发布到隐藏的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; ?>);

}

2 个答案:

答案 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; ?>);
 });