将 AJAX 响应加载到浏览器(没有 jQuery)

Load AJAX Response into Browser (without jQuery)

我正在使用以下 JS 代码加载远程页面:

function SendCustomRequest() {
    var request = new XMLHttpRequest(); 
    request.open("GET", "/test.html", false);
    request.send(null);
    alert(request.responseText);
}

这很好用,test.html 的 HTML 内容显示在警告消息框中。

现在我需要在浏览器 window 中显示整个 test.html 页面,但不显示 jQuery。在原始页面(发生 AJAX 调用的地方)不是 div 左右,但该页面必须完全替换为 test.html 的内容。而且它必须在 IE8 中工作。

有什么想法吗?

PS:如果需要,AJAX 调用也可以是异步的。

that page has to be completely replaced by the content of test.html

document.documentElement.outerHTML设置为request.responseText

request.onload = request.onreadystatechange = function() {
  document.documentElement.outerHTML = request.responseText
}

that page has to be completely replaced by the content of test.html

我认为这不是个好主意(因为我知道这在某些浏览器中是不可能的)。

您可以打开新的 window,然后将 test.html 的内容放在那里。

function SendCustomRequest() {
    var request = new XMLHttpRequest(); 
    request.open("GET", "/test.html", false);
    request.send(null);

    var newWindow = window.open("");
    newWindow.document.write(request.responseText);
}

查看 this article 了解如何将选项设置为 window。

同时勾选 MSDN's article

你说“...但是那个页面必须完全被test.html的内容替换” 如果我完全接受你的说法,它会说 页面的所有内容 都必须被替换。

AJAX 当 部分页面 应该更新时才有意义。

如果要替换整个页面,直接发出GET请求是合适的。

所以我建议在这种情况下不要使用 AJAX。 您提供给 AJAX 调用的 URL(加上参数)可以在脚本中分配给 window.location.href。浏览器会直接发出相应的GET请求,自动更新整个页面。

参见下面的示例:

function getNewPage(url,parameters) {
   alert("Issueing the GET request: "+url+"?"+parameters);
   window.location.href = url + "?" + parameters;
}

function doOnload() {
   getNewPage("http://www.example.com/test.html","par1=val1&par2=val2");
}
<body onload="doOnload(); return false;">
   <p>Some dummy text</p>
</body>