ブラウザーに 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 から更新されました。