Как перезагрузить родительскую страницу, когда диалоговое окно jQuery UI закрыто?

Я искал эти проблемы в stackoverflow и видел похожие вопросы (но не совсем то, что я ищу), но решение, похоже, не работает. Я просто новичок в jQuery, и мне нужна ваша помощь, чтобы сделать эту работу. (скрестить пальцы)

Итак, у меня есть веб-страница с кнопкой (например, parentPage.html). При нажатии на кнопку (выполняется функция openItemPopup) открывается модальный диалог с использованием пользовательского интерфейса jQuery. Содержимое модального диалога «#contentWindow» — это другая страница (например, modalDialog.html).


function resetContent() {
$('#contentFrame').attr('src', '/images/ajax-loader.gif');
}

function closeContent() {
$('.ui-dialog-titlebar-close').click();
}

function openItemPopup(){

$('#contentWindow').dialog({width:980, modal: true,
        close: function(ev, ui) { resetContent(); }
});
}

Внутри modalDialog.html при нажатии на якорь выполняется некоторая логика, и ему необходимо динамически закрывать модальное диалоговое окно. Кто-то сказал мне использовать это, и это уже работает:


              // refresh parent page before closing
              // doesn't work
              location.reload(true);

              // close the modal dialog
              window.top.closeContent();
              return false;
              window.location='javascript:void();';

Моя проблема: мне нужно обновить parentPage.html непосредственно перед закрытием модального диалогового окна. Вы видите выше, что я пытался использовать location.reload(true);, но он перезагружает модальный диалог, а не parentPage.html. Я не могу публиковать изображения, но пишет *"Недействительный сеанс веб-приложения".*

Я также попробовал window.top.location.reload(); и это, кажется, работает. Он перезагружает parentPage.html и закрывает модальное диалоговое окно.

              // refresh parent page before closing
              // seems working but has error
              window.top.location.reload();

              // close the modal dialog
              window.top.closeContent();
              return false;
              window.location='javascript:void();';

Однако он говорит "Неверный сеанс веб-приложения" — точно так же, как это было при использовании location.reload(true);. Я понятия не имею, почему это происходит и как это исправить. Я даже не уверен, что window.top.location.reload является правильным методом для этого.

К вашему сведению: я пытаюсь обновить файл parentPage.html, чтобы получить данные из модального диалогового окна. Раньше modalDialog.html функционировал как простая html-страница. Такие данные, как список и поля, правильно возвращаются из modalDialog.html в parentPage.html. Они хотели преобразовать его в модальное диалоговое окно, чтобы избежать БОЛЬШОГО обновления страницы. Кто-то сказал мне, что можно использовать AJAX, но это много работы. Кроме того, я не мастер этого. Если у вас есть лучшее предложение, дайте мне знать!

Я надеюсь, что вы можете помочь мне в этом. Заранее спасибо!!!


person afewknows    schedule 17.01.2013    source источник
comment
Попробуйте location.reload(); w3schools.com/jsref/met_loc_reload.asp   -  person simplyray    schedule 17.01.2013
comment
местоположение.перезагрузить(); перезагружает модальное диалоговое окно, а не родительскую страницу.   -  person afewknows    schedule 17.01.2013
comment
Является ли ваш модальный диалог iframe? В противном случае location.reload(); действительно должен помочь - уже делал это раньше с jquery colorbox и запросом ajax. РЕДАКТИРОВАТЬ: добавлен ответ с другим подходом.   -  person simplyray    schedule 17.01.2013
comment
Да, это iframe. Хм. Если бы только я мог показать вам способ.   -  person afewknows    schedule 17.01.2013
comment
Привет, ты когда-нибудь разбирался в этом вопросе?   -  person user167698    schedule 20.06.2016


Ответы (2)


В вашем диалоговом окне используйте close: function (ev, ui) { window.location.reload() }

person Troy Bryant    schedule 13.09.2013

Попробуйте это: в вашем parentPage.html добавьте новую функцию:

function reloadContent() {
    location.reload();
}

В вашем modalDialog.html вызовите функцию через:

parent.reloadContent();
person simplyray    schedule 17.01.2013
comment
Я попытался добавить его. Он обновил родительскую страницу, но пишет: «Недействительный сеанс веб-приложения». - person afewknows; 17.01.2013