Как вызвать функцию на родительской странице из iframe, используя jQuery? - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть форма для загрузки, которая публикует скрытый 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;

    }

})

РАМКА:

$(document).ready(function() {

   top.stopUpload(<?php echo $result; ?>);

}

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Попробуйте это:

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

Из вашего iframe:

$(document).ready(function() {
   parent.myGlobalObject.stopUpload(<?php echo $result; ?>);
 });
1 голос
/ 30 ноября 2011

Ваша функция stopUpload() относится к анонимной функции, которую вы передаете $(document).ready().

Вам необходимо убедиться, что его область видна для iframe. Один из способов сделать это - назначить функцию глобальному объекту в браузере window.

Другим методом было бы создание функции в глобальном коде вне этой анонимной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...