0

ブラウザーに URL (http://localhost:8080/Proj/page) を入力すると、メニューと iframe があるページが表示されます。メニューをクリックすると、いくつかのデータを投稿し、応答として HTML ドキュメントを取得することで、サーバーに ajax 要求を実行しています。JavaScript を使用して HTML ドキュメントを iframe に手動で更新しています。{この背後にある理由は、URL にクエリ パラメータがあり、GET ではなくサーバーに POST したいため、iframe src を変更していません}

元:

<a href="#" onClick="frameopen('helloWOrld.html?a=bc&d=ef')">menu</a>;
function frameopen(url) {
    var dataToSend = getQueryParameterFrmUrl(url);//got data in form of Object
    var urlWithoutQUeryParam = getUrlWithoutQueryParam(url);//got url without query parameter
    positionThrobber("section16_contentframe");//add the throbber
    //perform POST using ajax
    $.ajax({
        url: urlWithoutQUeryParam,
        data: dataToSend,
        type: 'POST',
        success: function (serverResponse) {
            //server response came write this to iframe
            removeThrobber();
            var ifrm = document.getElementById('contentframe');
            ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;
            ifrm.document.open();
            ifrm.document.write(serverResponse);//server response written
            ifrm.document.close();
        },
        error: function (jqXHR, textStatus, errorThrown) {
            removeThrobber();
            alert("Ajax Request Failed!Text Status:" + textStatus + ",errorThrown:" + errorThrown);
        }

    });

}

これで、iframe はサーバーの応答から取り込まれ、フォームが含まれます。

<iframe src="">
<html><body>
<form name="inboxSearchForm" id="inboxSearchForm" commandName="userQueueFilter" action="${pageContext.request.contextPath}/inbox/search" method="post">
<a href="#" id="nextPage" onclick="pageJump(document.getElementById('pageNum').value,'up') ">Next ></a>
</form>
</body></html>
</iframe>

javascriptを使用してフォームを送信するiframe内にリンク(Nextと呼ばれる)があります

document.getElementById('inboxSearchForm').submit();

問題は、次へのリンクをクリックしたときです。iframe には URL コンテンツがロードされます。(http://localhost:8080/Proj/pageつまり、iframe はページ全体、つまりメニューと iframe を格納し、再帰的です。誰でも理由を教えてもらえますか。iframe にしたい/inbox/searchブラウザの URL からではなく、URL から更新されました。

4

1 に答える 1

0

まず、IFrame ページがメインページにアクセスできなくなります。

提案: この目的で Iframe を使用しないでください。他のページからコンテンツを取得したい場合は、jquery の$.loadを使用します

しかし、あなたの場合、diviframe を使用してフォームを作成することをお勧めします。コードは、いくつかのマイナーな変更で同じように見える場合があります。

于 2012-12-28T10:12:48.100 に答える