通过AJAX替换整个页面只会导致IE中的Permission Denied错误

时间:2014-04-18 13:07:51

标签: javascript jquery internet-explorer

我有一个AJAX帖子,它从服务器检索数据,并替换部分页面或某些情况下的整页。这是由javascript fullRefresh参数控制的。问题是Firefox中的刷新代码可以找到但是在IE中运行后会在JQuery的内容中导致Permission Denied错误,尽管它看起来实际上会成功替换页面内容。

IE版本11.0.9600.16659

JQuery版本1.8.2

Error message
Unhandled exception at line 2843, column 3 in http://localhost:62761/Scripts/jquery-1.8.2.js

0x800a0046 - JavaScript runtime error: Permission denied

我的代码是

function RefreshScreenContent(formActionUrl, formHTML, fullRefresh) {

    fullRefresh = (typeof fullRefresh === "undefined") ? false : fullRefresh;

    if (fullRefresh) {
        document.write(formHTML);
        document.close();
    }
    else {
        $("#content-parent").html(formHTML);
    }


}

部分刷新工作正常,但完全刷新是问题。我已经尝试过硬编码document.write调用来编写一个结构良好的简单html页面而不是formHTML,以防出现问题,但即使是简单的单个单词页也会导致错误。

稍后在JQuery内部进行回调时会发生实际错误。

服务器的AJAX帖子在同一个应用程序中,即不是跨域请求。我在网上看过有关跨领域内容的帖子,这里不适用。

谁能告诉我为什么会这样,以及如何阻止它?有替代页面内容的替代IE方式吗?

2 个答案:

答案 0 :(得分:0)

您的代码很好(至少乍一看)。我的猜测是你以这种方式打电话,它被解释为跨域。

我建议检查一下:

  • http vs https(最常见)
  • 目的地港口
  • 根网址
  • 也许"目的地"页面提出了自己的一些请求,检查是在同一个域

IE可能是唯一一个有问题的原因是它具有更高的安全性要求默认其他浏览器(检查高级安全设置 - 无法记住它们放在菜单中的位置)所以它解释请求在一个更多的偏执狂"庄园。

我再说一遍,根据我已经投入的案例,我所说的只是猜测。

答案 1 :(得分:0)

最后,我使用这里的方法将pgae中的body标签替换为AJAX收到的标记中的标签https://stackoverflow.com/a/7839921/463967

我本来希望更换所有内容而不仅仅是身体,但我总是可以随后调整以包含标题等,因为身体足以供我现在使用。这适用于IE和Firefox。