假设我在浏览器中输入了一个URL(http:// localhost:8080 / Proj / page),我得到一个页面,其中包含菜单和iframe。点击菜单我正在通过发布一些数据并获取HTML文档作为响应来向服务器发出ajax请求。 我使用javascript手动将HTML文档更新为iframe。 {背后的原因这个URL有一个查询参数,我想将它发布到服务器而不是GET,因此我不会改变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>
在iframe中有一个链接(名为Next),它使用javascript提交表单
document.getElementById('inboxSearchForm').submit();
问题是,当我点击链接Next .. iframe加载了URL内容(http://localhost:8080/Proj/page
,即iframe现在存储整个页面,即菜单和iframe,它是递归的..任何人都可以告诉我什么可能是原因..
我希望从URL /inbox/search
刷新iframe,而不是从浏览器中的URL刷新。这种行为在Mozilla中面临的问题不会反映出来:(
答案 0 :(得分:0)
首先,IFrame页面永远无法联系主页。
<强>建议:强> 不要为此目的使用Iframe。如果你想从其他页面获取一些内容,请使用jquery的$.load
但在您的情况下,我建议您使用div
而不是iframe制作表单。代码可能看起来相同但有一些细微的变化。