XMLHttpRequest

request|xml|xmlhttprequest

在Ajax應用程式中,如果是Mozilla/Firefox/Safari中,可以透過XMLHttpRequest來發出非同步請求,如果是在IE6 或IE先前版本,則是使用ActiveXObject來發出非同步請求,為了各個不同瀏覽器間的相容性,必須進行測試可取得XMLHttpRequest 或ActiveXObject,例如:
var xmlHttp;
function createXMLHttpRequest() {
    if (window.XMLHttpRequest) { // 如果可以取得XMLHttpRequest
        xmlHttp = new XMLHttpRequest();  // Mozilla、Firefox、Safari
    }
    else if (window.ActiveXObject) { // 如果可以取得ActiveXObject
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer
    }
}
這段程式碼可以滿足大部份的瀏覽器,您可以再進一步檢查是否真正生成了物件,例如:
if(xmlHttp) {
    // do request
}
else {
    alert("您的瀏覽器不支援這個Ajax程式的功能");
}

在建立XMLHttpRequest之後,則可以使用以下的幾種方法:

  • void open(string method, string url, boolean asynch, string username, string password)

開啟對伺服端的連結;method為請求方式(GET、POST);url為伺服端位址,如果是GET的話,可加上請求參數與值;asynch為非同步設定,預設是true,表示使用非同步方式。

  • void send(content)

對伺服端傳送請求,content這以放XML、輸入串流、字串、JSON格式的內容,放進去會放在POST本體中發送。

  • void setRequestHeader(string header, string value)

為HTTP請求設定一個給定的 header 設定值。

  • void abort()

用來中斷請求。

  • string getAllResponseHeaders()

傳回一個字串,其中包含HTTP請求的所有回應標頭。

  • string getResponseHeader(string header)

傳回一個字串,其中包含指定的回應標頭值。

XMLHttpRequest包括以下幾個標準屬性:

  • onreadystatechange

參考至callback函式,readyState每次改變時,都會呼叫onreadystatechange所參考的函式。

  • readyState

會有0到4的數值,分別表示不同的請求狀態:
0 = 未初始化的連線(uninitialized),還沒呼叫open()
1 = 載入中(loading),呼叫open(),還沒呼叫send()
2 = 已載入(loaded),呼叫send(),請求header/status準備好
3 = 互動中(interactive),正在與伺服器互動中
4 = 請求完成(completed),完成請求

  • responseText

伺服器傳來的請求回應文字,會設定給這個屬性。

  • responseXML

伺服器傳來的請求回應如果是XML,會成為DOM設定給這個屬性。

  • status

伺服器回應的狀態碼,例如200是OK,404為Not Found…

  • statusText

伺服器回應的狀態文字。
一個基本的Ajax請求可以是以下的片段:
function startRequest() {
    createXMLHttpRequest(); // 建立非同步請求物件
    xmlHttp.onreadystatechange = handleStateChange;  // 設定callback函式
    xmlHttp.open("GET", "simpleResponse.txt");  // 開啟連結
    xmlHttp.send(null);  // 傳送請求
}

function handleStateChange() { // 在這邊處理非同步回應
    …
}

當每次readyState改變時,都會呼叫以上程式片段中設定的handleStateChange()函式,通常會在請求完成進行處理,所以您可以如以下的程式片段來處理回應:
function handleStateChange() {
   if (xmlHttp.readyState == 4) { // 測試狀態是否請求完成
     if (xmlHttp.status == 200) { // 如果伺服端回應OK
          alert("伺服器回應" + xmlHttp.responseText);  // 這邊只取得回應文字
     }
   }
}

时间: 2024-08-04 12:43:18

XMLHttpRequest的相关文章

XMLHTTPRequest属性及方法介绍教程

1.XMLHTTPRequest对象是什么?2.创建XMLHTTPRequest对象.3.XMLHTTPRequest的属性和方法. 1.XMLHTTPRequest对象是什么? 最通用的定义为:XmlHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面.(这个功能正是AJAX的一大特点之一:)) 来自MSDN的解释:XmlHttp提供客

错误分析和AJAX(XMLHttpRequest)

ajax|request|xml|xmlhttprequest|错误 即使你现在还没有听说,AJAX已经成为web技术领域最热门的词(就象Adaptive Path上的一篇文章提到的一样).AJAX框架的关键是名为XMLHttpRequest的JavaScript对象,通过它客户端开发人员可以在不打断用户操作或者在充分使用隐藏表单的情况下通过HTTP直接发送和接收XML文档.现在,有些人可能会有这种忧虑,让那些以前只做表单(form)校验和增加图片动画效果的客户端开发人员突然间负责分析XML文档

XMLHttpRequest Object

object|request|xml|xmlhttprequest 什么是XMLHttpRequest对象 一个页面可以通过一个HttpRequest发送一个请求来获取服务器响应,而当前页面不做刷新. 通过使用XMLHttpRequest对象,开发者可以在不刷新当前页面的情况下更新当前页面的数据. 注:XMLHttpRequest对象不是W3C标准,不过目前已有以下浏览器支持此对象操作:IE5.0+,Safari1.2,Mozilla1.0,Firefox,Netscape7. 创建一个XMLH

使用 JavaScript 实现 XMLHttpRequest,在IE,FireFox 上测试通过!

javascript|request|xml|xmlhttprequest XMLHttp 方式实现无刷屏,在IE,FireFox 上测试通过 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/tr/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><style&

另类无刷新、联动下拉列表框(二级+XMLHttpRequest)

request|xml|xmlhttprequest|刷新|无刷新|下拉|下拉列表 二级的联动下拉列表,从思路上讲,大致分下列几步: 一:触发第一个下拉列表的onchange事件. 二:异步调用处理页后,会返回处理请求后的信息(服务器端用Response.Write方法写入要返回的字符串,客户端用responseText属性接收字符串. 三:用得到的字符串处理后更新第二个下拉列表框 主要代码如下: 一:建立读取XML的类,这里也可以是数据库的查询 public class ReadXmlCS {

常用的XmlHttpRequest对象属性

request|xml|xmlhttprequest|对象 Common XMLHttpRequest Object Methods Method Description abort() Stops the current request getAllResponseHeaders() Returns complete set of headers (labels and values) as a string getResponseHeader("headerLabel") Retu

AJAX客户端说明,XMLHttpRequest对象

ajax|request|xml|xmlhttprequest|对象|客户端 在CommunityServer中运用了自己的AJAX机制,没有借助其他的辅助控件.其中客户的XMLHttpRequest对象的封装,就足以让人大饱眼福,在一般的浏览器其都能够运行AJAX.下面我们来学习学习这个咚咚,希望能给更多的人带来帮助.  首先当然是要了解一下浏览器中的XMLHttp对象了:  XMLHTTP方法:           备注:客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应

一份老外写的XMLHttpRequest代码多浏览器支持兼容性

request|xml|xmlhttprequest|浏览器  这几天要构思用Javascript调用Asp.Net的WebService,需要到XMLHTTP来支持,但发现Opera的XMLHttpRequest很烂,实在支持不下去,后来到处找,终于发现这份代码,在Opera中是利用java.net.URL等类来实现的,不敢独享,特发上来与大家同乐.[复制此代码]CODE:/* Cross-Browser XMLHttpRequest v1.2 ========================

AJAX核心对象-- XMLHttpRequest 对象使用详解 (一)

ajax|request|xml|xmlhttprequest|对象|详解 多数 Web 应用程序都使用请求/响应模型从服务器上获得完整的HTML 页面.常常是点击一个按钮,等待服务器响应,再点击另一个按钮,然后再等待,这样一个反复的过程.有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了. 本文中,Brett McLaughlin 介绍了如何创建能够适应不同浏览器的 XMLHttpRequest 实例,建立和发送请求,并响应服务器. 本