为什么这个jquery表单在IE中没有正确提交?

时间:2015-12-08 23:02:17

标签: javascript jquery internet-explorer

我的目标是打开一个新窗口并在该窗口中的当前页面上提交表单,同时保持原始窗口中的同一页面。然后,稍微暂停后,更改新窗口的URL。与仅将表格发布到' _blank'但我想保留新窗口的句柄,以便我可以用新的URL重新加载它。

这适用于Chrome和Firefox,但不适用于IE(IE11是我正在使用的)。在IE中,表单提交到当前页面而不是新窗口中的页面。因此,似乎将目标设置为新窗口并不适用于IE。这是IE不支持的吗?或者我需要使用不同的属性或语法吗?

理想情况下,我们发布的应用会自行重定向,但我无法改变这一点。更糟糕的是,它位于不同的域中,所以我不认为iFrame是一个选项(与ajax一起)。如果我在iframe解决方案上出错了,请纠正我

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">

    var cacheWin;
    $(document).ready(function () {
        var left = window.screenLeft ? window.screenLeft : window.screenX;
        var top = window.screenTop ? window.screenTop : window.screenY;
        //this will happen on page load
        cacheWin = window.open('', 'cacheWin',
                "screenX=" + left + ",screenY=" + top + ",left=" + left + ",top=" + top + ",width=1200,height=800,scrollbars=yes");

        submitForm();
    });

    function submitForm() {
        if (cacheWin) {
            var $mainForm = $('#mainForm');
            $mainForm.prop("target", "cacheWin");
            //submit the form to our new window
            $mainForm.submit();
            cacheWin.focus();
            showResponse(cacheWin);
        } else {
            //wait for a second and try again
            window.setTimeout(function () {
                submitForm();
            }, 1000);
        }
    }

    function showResponse(win) {
        //after a delay to allow caching data to submit, show the content
        window.setTimeout(function () {
            displayContents(win);
        }, 1000);
    }

    function displayContents(nwin) {
        nwin.location = '<%=contentUrl%>';
    }
</script>

表格:

<form id="mainForm" action="<%=cacheAction%>" method="POST">
    .... inputs and some other stuff
</form>

0 个答案:

没有答案