这是一个修改后的示例,你可以在w3schools.com找到原始版本。
<script type="text/javascript">
function loadXMLDoc(theURL)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari, SeaMonkey
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET", theURL, false);
xmlhttp.send();
}
</script>
只要将 "example.html" 设置为要加载的页面的路径(相对或绝对路径都可以),xmlhttp.responseText
就会是一个包含响应内容的字符串。如果你希望将其存储为可遍历的 XML 文档,也可以使用 xmlhttp.responseXML
。无论如何,只需将它们中的任意一个分配给你选择的变量即可!
请注意,'loadXMLDoc' 并不直接返回任何内容,而是定义了其中一个成员('onreadystatechange')来执行这项工作,并仅在特定条件(readyState 和 status)下才执行。因此,不要将此函数的输出分配给任何变量。而是像这样做:
var xmlhttp=false;
loadXMLDoc('http://myhost/mycontent.htmlpart');
if(xmlhttp==false){ /* set timeout or alert() */ }
else { /* assign `xmlhttp.responseText` to some var */ }
没有这个,我们只能看到 'undefined'...
要获取 HTML 标签内的所有内容:
var html = document.getElementsByTagName('html')[0];
var text = html.innerHTML;
然后你可以将其包装在HTML标签中。这并没有捕获文档类型或任何其他位于HTML标签外的内容,但这是一种快速获取大部分内容的方法。
function getPageContents(callback,url,params) {
http=new XMLHttpRequest();
if(params!=null) {
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
} else {
http.open("GET", url, true);
}
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
callback(http.responseText);
}
}
http.send(params);
}
getPageContents(function(result) {
personinfo=JSON.parse(result);
//Now I can do anything here with the personinfo array
},'http://localhost/findpersoniinfo.php','fname=stretch&lname=wright')
更进一步,你可以将这个函数嵌套在另一个函数中,我们称其为getPersonInfo()
:
function getPersonInfo(fname,lname) {
getPageContents(function(result) {
personinfo=JSON.parse(result);
//Now I can do anything here with the personinfo array
},'http://localhost/findpersoninfo.php','fname='+fname+'&lname='+lname)
}
/v1/data?format=json
这样的url下载JSON数据的简单解决方案如下:xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", "/v1/data?format=json", false);
xmlhttp.send();
var data = JSON.parse(xmlhttp.responseText);