2011-11-30 103 views
4

我有一個上傳表單發佈到隱藏的iframe。我試圖從iframe的父頁面上調用一個函數,但得到錯誤「top.stopUpload不是一個函數」。如何使用jQuery從iframe的父頁面調用函數?

這樣做的正確方法是什麼?

父頁面:

$(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; ?>); 

} 

回答

1

stopUpload()功能的作用範圍是傳遞給$(document).ready()匿名函數。

您需要確保其範圍對iframe可見。一種方法是將函數分配給window,即瀏覽器中的全局對象。

另一種方法是在匿名函數之外的全局代碼中創建函數。

1

試試這個:

var myGlobalObject = {}; 
myGlobalObject.stopUpload = function(success){ 
if (success == 1){ /*...*/} 
    //... 
}; 
$(document).ready(function() { 
    //... 
}); 

在自己的iframe:

$(document).ready(function() { 
    parent.myGlobalObject.stopUpload(<?php echo $result; ?>); 
}); 
相關問題