iframe表单将数据提交到Window URL

时间:2012-12-28 09:59:33

标签: javascript jquery html spring-mvc

假设我在浏览器中输入了一个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中面临的问题不会反映出来:(

1 个答案:

答案 0 :(得分:0)

首先,IFrame页面永远无法联系主页。

<强>建议: 不要为此目的使用Iframe。如果你想从其他页面获取一些内容,请使用jquery的$.load

但在您的情况下,我建议您使用div而不是iframe制作表单。代码可能看起来相同但有一些细微的变化。