浏览器中的XML
XMLHttpRequest对象是AJAX(异步JavaScript+XML)开发范例的焦点所在,但它并非最近才出现。微软最先在 Windows IE5中将XMLHttpRequest对象应用为ActiveX对象。Mozilla也在它的Mozilla 1.0(与Netscape 7)中应用了它的一个本地兼容版本。苹果也在它的Safari 1.2 中应用此对象。加入W3C DOM规格更使其成为网络开发的标准。
XMLHttpRequest对象允许JavaScript不需重新装载页面即可发送HTTP请求。实质上,HTTP请求是通过后台收到的响应来发送的,但是,由于没有可见的中断产生,用户完全意识不到后台的处理过程,而会继续工作。对开发人员来说,这真是意外的收获,导致了能够实时向服务器发送数据的响应用户界面。
方法
XMLHttpRequest对象包含少量的方法,如下所示:
* abort():终止当前请求。
* getAllResponseHeaders():返回一个包含整套头标签与值的字符串。
* getResponseHeader(“名称”):返回特定头标签的字符串值。
* open(“方法”,“url”,“异步标志”,“用户名”,“密码”):替即将发生的请求执行安装功能,并允许你指定URL、方法(通常获得或提交)以及异步标志的可选参数,用户名与密码。
* sent(内容):发送(由open方法建立)的请求。可选内容参数可能包含字符串或DOM格式数据。
* setRequestHeader(“标签”,“值”):允许你指定与请求(由send方法建立)一同发送的标签/值对。
open方法的第三个可选参数是一个布尔代数值,它对你是否异步处理即将发生的交易进行控制;这也是AJAX首字母缩写异步部分进入图片的地方。异步处理为边默认行为(真),就是说在调用send()方法后,不用等待响应就立即执行脚本处理。如果将此值设为假,此脚本等待发出请求,服务器做出反映后再执行。
属性
网络或服务器可能会引起问题,使脚本无法执行,因此在继续处理之前等待响应并非总是明智之举。更稳妥的做法是:在请求对象的onreadystatechange事件发生时,异步发送并设计代码,如下面的XMLHttpRequest对象属性表所示:
* onreadystatechange:每个状态发生改变所引发的事件的事件处理器。
* readyState:对象的状态(0=未初始化,1=正在装载,2=装载完毕,3=交互,4=完成)。
* responseText:服务器返回数据的字符串表示。
* responseXML:服务器返回数据的DOM表示。
* status:服务器请求HTTP状态代码的数字代码。
* statusText:伴随数字状态代码的字符串信息。
你可以在用户继续使用应用软件的同时,利用XMLHttpRequest对象的方法与属性,在后台发送请求。
了解应用中的对象
有两种在JavaScript代码中应用XMLHttpRequest对象的方法。以下是IE方法:
varreq = new ActiveXObject("Microsoft.XMLHTTP");
以下为非IE方法:
varreq = new XMLHttpRequest();
由于这个原因,根据你所使用的浏览器,你可能想包括建立对象实例的代码,如下面的代码所示:
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
这样就建立了一个基于浏览器的XMLHttpRequest类。
在列表A中,网页应用ASP.NET,对输入到文本框中的公司名执行电话号码查询(我使用的是标准的SQL Server Northwind数据库)。文本域的JavaScript onblur事件触发查询。
列表A<html><head>
<title>TechRepublic.com Example</title>
<script type="text/javascript" language="JavaScript">
function getTelephone(cName) {
document.body.style.cursor='wait';
varobj = null;
if (window.XMLHttpRequest) {
obj = new XMLHttpRequest();
} else if (window.ActiveXObject) {
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
vargoUrl = "http://localhost/test3.aspx?cname=" + cName
obj.open("POST",goUrl, false );
obj.send();
if ((obj.responseText == "Error") || (obj.responseText == ""))
alert("The company name is invalid.");
else
this.document.forms[0].telephone.value = obj.responseText;
document.body.style.cursor='auto';
}
</script></head><body>
<form id="frmText">
<input type="text" name="telephone" /><br />
<input type="text" name="cname" onblur="getTelephone(this.value);" />
</form>
</body></html>
对HTML页面的几点提示:
* getTelephone JavaScript方法与XMLHttpRequest对象共同工作。它(根据浏览器)建立对象,并将(从文本域)提交到它的值贴粘到ASP.NET页面。
* XMLHttpRequest对象的返回值(responseText属性)用于决定不返回数据,或是返回错误。
* 文本域的onblur事件与JavaScript函数联系在一起,当用户在域外点击时,即被调用。
在列表B中,XMLHttpRequest对象调用ASP.NET代码。ASP.NET页面很简单。它应用通过QueryString变量提交到页面的值来定位SQL服务器数据库中匹配的数据,并返回匹配数据,如果发生异常,则返回错误。
列表B
<%@ Page Language="C#" ContentType="text/plain" Debug="true" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>
<script language="C#" runat="server">
private SqlConnection conn = null;
private SqlCommand cmd = null;
private String connString;
private String strSQL;
private void Page_Load(object sender, System.EventArgs e) {
if (!IsPostBack) {
connString = "data source=SALESLAPTOP;uid=test;pwd=test;initial catalog=Northwind";
strSQL = "SELECT Phone FROM dbo.Customers WHERE CompanyName LIKE '%" + Request.QueryString["cname"] + "%'";
try {
conn = new SqlConnection(connString);
cmd = new SqlCommand(strSQL, conn);
conn.Open();
Response.Write(cmd.ExecuteScalar().ToString());
conn.Close();
}catch (Exception ex) {Response.Write("Error");
} finally {
if (conn.State == ConnectionState.Open) {
conn.Close();
}conn.Dispose();
} } }
</script>
本例应用一个终端ASP.NET页面,但它可以使用任何开发语言。另外,由于终端页面只是简单地应用返回值,终端页面不必与调用它的页面使用同样的开发语言或平台。终端页面也可能是一个网络服务。
分享到:
相关推荐
Ajax核心对象XMLHTTPRequest详细参数及例子
XMLHttpRequest对象是Ajax技术的基础,它允许JavaScript在页面不刷新的情况下与服务器进行通信。创建一个XMLHttpRequest实例非常简单: ```javascript var xhr = new XMLHttpRequest(); ``` 一旦创建了实例,我们...
经测试,用此方法创建XMLHttpRequest对象,在运用AJAX的时候,可以的兼容IE6,IE7,IE8,Opera,Safari,Google Chrome,fireFox。主流的应该就这些吧?theWorld,遨游等浏览器都是以IE为核心的,所以肯定也没问题。 另外...
[王兴魁]AJAX核心技术1-XMLHttpRequest对象的使用
XMLHttpRequest对象是Ajax技术的核心,它是现代Web应用中用于实现客户端与服务器间异步数据交换的关键组件。在不刷新整个页面的情况下,XMLHttpRequest允许开发者通过JavaScript动态更新网页内容,极大地提升了用户...
XMLHttpRequest对象是AJAX的核心,它允许JavaScript在不刷新页面的情况下与服务器进行通信。创建XMLHttpRequest对象后,可以调用其open()方法指定HTTP请求类型(GET或POST)、URL以及是否异步执行。接着,使用send()...
XMLHttpRequest 对象是 Ajax 技术的核心,它是一种浏览器对象,用于模拟 HTTP 的 GET 和 POST 请求。配合 JavaScript,可以实现页面数据在无刷新下的定时更新。 XMLHttpRequest 对象的属性: * onreadystatechange...
在ASP.NET AJAX开发中,XMLHttpRequest对象是进行异步数据通信的核心组件,它允许我们向服务器发送请求并接收响应,而无需刷新整个页面。在这个例子中,我们将关注如何处理服务器返回的数据,特别是`ResponseXML`和`...
**Ajax核心XMLHttpRequest中文参考手册** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。...
XMLHttpRequest对象是JavaScript中用于异步数据交换的核心组件,它是AJAX(Asynchronous JavaScript and XML)技术的基础。AJAX允许网页在不刷新整个页面的情况下,仅更新部分区域,从而提高用户体验。尽管名称中...
**WEB开发中的AJAX与XMLHttpRequest对象** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器交换数据并局部刷新页面,极大地提升了用户...
[王兴魁]AJAX核心技术2-XMLHttpRequest对象的扩展问题
**Ajax入门基础之XMLHttpRequest对象总结** Ajax,即异步JavaScript和XML,是一种在无需刷新整个页面的情况下更新部分网页的技术。在Ajax的核心中,XMLHttpRequest(XHR)对象扮演着至关重要的角色,它允许...
本压缩包文件"创建XMLHttpRequest对象的方法.rar"包含了一份关于如何创建XMLHttpRequest对象的详细教程,其核心内容可以从以下几个方面来理解: 1. **XMLHttpRequest对象的创建** 在JavaScript中,XMLHttpRequest...
Ajax的核心在于**XMLHttpRequest对象**,它使得Web应用程序可以在不刷新整个页面的情况下与服务器进行异步通信。 #### 二、XMLHttpRequest对象概述 XMLHttpRequest对象是实现Ajax功能的关键组件。它提供了一种在...
Ajax的核心就是XMLHttpRequest对象,它允许网页脚本发送异步HTTP请求并与服务器进行数据交换,而无需重新加载整个页面。本文档将详细介绍XMLHttpRequest对象的基本知识、属性和方法,并演示如何使用它来进行简单的...
首先,要理解XMLHttpRequest对象是Ajax的核心,它负责在后台与服务器进行通信。在JavaScript中,我们可以通过以下方式创建一个XMLHttpRequest实例: ```javascript var xhr = new XMLHttpRequest(); ``` 接下来,...
Ajax技术的核心是XMLHttpRequest对象,它允许网页在不重新加载整个页面的情况下,与服务器进行数据交换,从而实现局部刷新,提升响应速度和交互性。 ### Ajax与XMLHttpRequest Ajax技术最早由Adaptive Path提出,...