XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


AJAX 服务器响应

onreadystatechange 属性

readyState 属性保存XMLHttpRequest的状态。

onreadystatechange 属性定义当readyState更改时要执行的函数。

status 属性和statusText属性保存XMLHttpRequest对象的状态。

属性 描述
onreadystatechange 定义readyState属性更改时要调用的函数
readyState 保存XMLHttpRequest的状态。
0: 请求未初始化
1: 已建立服务器连接
2: 已收到请求
3: 正在处理请求
4: 请求已完成,响应已准备就绪
status 200: "OK"
403: "Forbidden"
404: "Page not found"
有关完整列表,请转到 Http 消息参考
statusText 返回状态文本(例如"确定"或"未找到")

每次readyState更改时都会调用onreadystatechange函数。

当readyState为4且status为200时,响应就绪:

实例

function loadDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("demo").innerHTML =
            this.responseText;
       }
    };
    xhttp.open("GET", "ajax_info.txt", true);
    xhttp.send();
}
尝试一下 »

onreadystatechange事件被触发四次(1-4),readyState中的每次更改触发一次。



使用回调函数

回调函数是作为参数传递给另一个函数的函数。

如果一个网站中有多个AJAX任务,那么应该为执行XMLHttpRequest对象创建一个函数,为每个AJAX任务创建一个回调函数。

函数调用应该包含URL和响应就绪时要调用的函数。

实例

loadDoc("url-1", myFunction1);

loadDoc("url-2", myFunction2);

function loadDoc(url, cFunction) {
  var xhttp;
  xhttp=new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      cFunction(this);
    }
 };
  xhttp.open("GET", url, true);
  xhttp.send();
}

function myFunction1(xhttp) {
  // action goes here
}
function myFunction2(xhttp) {
  // action goes here
}
尝试一下 »

服务器响应属性

属性 描述
responseText 以字符串形式获取响应数据
responseXML 以XML数据的形式获取响应数据

服务器响应方法

方法 描述
getResponseHeader() 从服务器资源返回特定的头信息
getAllResponseHeaders() 返回服务器资源中的所有标头信息

responseText 属性

responseText 属性将服务器响应作为JavaScript字符串返回,您可以相应地使用它:

实例

document.getElementById("demo").innerHTML = xhttp.responseText;
尝试一下 »

responseXML 属性

XML HttpRequest 对象有一个内置的XML解析器。

responseXML 属性将服务器响应作为XML DOM对象返回。

使用此属性,您可以将响应解析为XML DOM对象:

实例

请求文件cd_catalog.xml并解析响应:

xmlDoc = xhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
  txt += x[i].childNodes[0].nodeValue + "<br>";
  }
document.getElementById("demo").innerHTML = txt;
xhttp.open("GET", "cd_catalog.xml", true);
xhttp.send();
尝试一下 »

在本教程的DOM章节中,您将了解更多关于XML DOM的内容。


getAllResponseHeaders() 方法

getAllResponseHeaders() 方法从服务器响应返回所有头信息。

实例

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    document.getElementById("demo").innerHTML =
    this.getAllResponseHeaders();
  }
};
尝试一下 »

getResponseHeader() 方法

getResponseHeader() 方法从服务器响应返回特定的头信息。

实例

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    document.getElementById("demo").innerHTML =
    this.getResponseHeader("Last-Modified");
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
尝试一下 »