2

私はstackoverflowでこの問題を検索し、同様の質問を見てきました(しかし、私が探しているものとは正確には異なります)が、解決策はうまくいかないようです. 私は jQuery の初心者であり、これを機能させるにはあなたの助けが必要です。(クロスフィンガー)

だから私はボタン(parentPage.htmlなど)のあるWebページを持っています。ボタンがクリックされると (openItemPopup 関数が実行されます)、jQuery UI を使用してモーダル ダイアログが開きます。モーダル ダイアログ「#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 ではなくモーダル ダイアログが再読み込みされます。写真を投稿できませんが、* 「無効な Web アプリケーション セッション」と表示されます。*

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();';

ただし、「無効な Web アプリケーション セッションです」と表示されます。-- location.reload(true); を使用したときと同じように。なぜこれが起こっているのか、それを修正する方法はわかりません。window.top.location.reload がこれを行う正しい方法であるかどうかさえわかりません。

参考: モーダル ダイアログからデータを取得できるように、parentPage.html を更新しようとしています。以前は、modalDialog.html は単純な html ページとして機能していました。リストやフィールドなどのデータは、modalDialog.html から parentPage.html に適切に返されます。彼らは、大量のページ更新を防ぐために、モーダル ダイアログとして変換したいと考えていました。AJAX を使用することは可能ですが、それは大変な作業だと誰かが私に言いました。その上、私はそれの達人ではありません。より良い提案があれば、遠慮なくお知らせください。

これについて私を助けてくれることを願っています。前もって感謝します!!!

4

2 に答える 2

5

ダイアログでは、close: function (ev, ui) { window.location.reload() }

于 2013-09-13T12:26:28.920 に答える
2

これを試してください:あなたのparentPage.htmlに新しい関数を追加してください:

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

modalDialog.html で、次の方法で関数を呼び出します。

parent.reloadContent();
于 2013-01-17T09:03:59.470 に答える