将 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>
我正在使用以下 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>