admin 管理员组

文章数量: 887031


2023年12月18日发(作者:normrnd和randn区别)

初学者入门教程,来源于网络

AJAX 简介

AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。

AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。AJAX 可使因特网应用程序更小、更快,更友好。

AJAX 是一种独立于 Web 服务器软件的浏览器技术。AJAX 基于下列 Web 标准:

JavaScript

XML

HTML

CSS

在 AJAX 中使用的 Web 标准已被良好定义,并被所有的主流浏览器支持。AJAX 应用程序独立于浏览器和平台。

1. AJAX 使用 Http 请求

在传统的 JavaScript 编程中,假如您希望从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息的话,就必须利用一个 HTML 表单向服务器 GET 或 POST 数据。而用户则需要单击“提交”按钮来发送/获取信息,等待服务器的响应,然后一张新的页面会加载结果。由于每当用户提交输入后服务器都会返回一张新的页面,传统的 web 应用程序变得运行缓慢,且越来越不友好。通过利用 AJAX,您的 JavaScript 会通过 JavaScript

的 XMLHttpRequest 对象,直接与服务器来通信。通过使用 HTTP 请求,web 页可向服务器进行请求,并得到来自服务器的响应,而不加载页面。用户可以停留在同一个页面,他或她不会注意到脚本在后台请求过页面,或向服务器发送过数据。

XMLHttpRequest 对象:通过使用 XMLHttpRequest 对象,web 开发者可以做到在页面已加载后从服务器更新页面!

您的第一个 AJAX 应用程序:为了让您理解 AJAX 的工作原理,我们将创建一个小

型的 AJAX 应用程序。

首先,我们需要一个带有两个文本框的 HTML 表单:用户名和时间。用户名文本框由用户填写,而时间文本框使用 AJAX 进行填写。

此 HTML 文件名为 ""(请注意这个 HTML 表单没有提交按钮!):

2. AJAX - 浏览器支持

AJAX 的要点是 XMLHttpRequest 对象。不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。IE 浏览器使用 ActiveXObject,而其他的浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象。如需针对不同的浏览器来创建此对象,我们要使用一条 "try and catch" 语句。您可以在我们的 JavaScript 教程中阅读更多有关 try 和

catch 语句 的内容。

让我们用这段创建 XMLHttpRequest 对象的 JavaScript 来更新一下我们的

"" 文件:

用户:

时间:

例子解释:

首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。

然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对

Firefox、Opera 以及 Safari 浏览器。假如失败,则尝试针对 Internet Explorer 6.0+

的 xmlHttp=new ActiveXObject("P"),假如也不成功,则尝试针对

Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("P")。

假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持 AJAX 的提示。

注释:上面这些浏览器定制的代码很长,也很复杂。不过,每当您希望创建

XMLHttpRequest 对象时,这些代码就能派上用场,因此您可以在任何需要使用的时间拷贝粘贴这些代码。上面这些代码兼容所有的主流浏览器:Internet Explorer、Opera、Firefox 以及 Safari。

3. AJAX - XMLHttpRequest 对象

在向服务器发送数据之前,我们有必要解释一下 XMLHttpRequest 对象的三个重要的属性。

onreadystatechange 属性

onreadystatechange 属性存有处理服务器响应的函数。下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行设置:

ystatechange=function()

{

// 我们需要在这里写一些代码

}

readyState 属性

readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。

这是 readyState 属性可能的值:

状态

0

1

2

3

4

描述

请求未初始化(在调用 open() 之前)

请求已提出(调用 send() 之前)

请求已发送(这里通常可以从响应得到内容头部)

请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应)

请求已完成(可以访问服务器响应并使用它)

我们要向这个 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据):

ystatechange=function()

{

if(tate==4)

{

// 从服务器的response获得数据

}

}

responseText 属性

可以通过 responseText 属性来取回由服务器返回的数据。

在我们的代码中,我们将把时间文本框的值设置为等于 responseText:

ystatechange=function()

{

if(tate==4)

{

=seText;

}

}

4. AJAX - 请求服务器

要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。

open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。第二个参数规定服务器端脚本的 URL。第三个参数规定应当对请求进行异步地处理。

send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 文件位于相同的目录,那么代码是这样的:

("GET", "",true);

ystatechange=function() {

if (tate==4) {

alert(seText)

}

}

(null)

运行结果:

发出 Ajax 请求

function callServer() {

// Get the city and state from the web form

var city = mentById("city").value;

var state = mentById("state").value;

// Only go on if there are values for both fields

if ((city == null) || (city == "")) return;

if ((state == null) || (state == "")) return;

// Build the URL to connect to

var url = "/scripts/?city=" + escape(city) +

"&state=" + escape(state);

// Open a connection to the server

("GET", url, true);

// Setup a function for the server to run when it's done

ystatechange = updatePage;

// Send the request

(null);

}

其中大部分代码意义都很明确。开始的代码使用基本 JavaScript 代码获取几个表单字段的值。然后设置一个 PHP 脚本作为链接的目标。要注意脚本 URL 的指定方式,city 和

state(来自表单)使用简单的 GET 参数附加在 URL 之后。

然后打开一个连接,这是您第一次看到使用 XMLHttpRequest。其中指定了连接方法(GET)和要连接的 URL。最后一个参数如果设为 true,那么将请求一个异步连接(这就是 Ajax 的由来)。如果使用 false,那么代码发出请求后将等待服务器返回的响应。如果设为 true,当服务器在后台处理请求的时候用户仍然可以使用表单(甚至调用其他 JavaScript

方法)。

xmlHttp(要记住,这是 XMLHttpRequest 对象实例)的 onreadystatechange 属性可以告诉服务器在运行完成 后(可能要用五分钟或者五个小时)做什么。因为代码没有等待服务器,必须让服务器知道怎么做以便您能作出响应。在这个示例中,如果服务器处理完了请求,一个特殊的名为 updatePage() 的方法将被触发。

最后,使用值 null 调用 send()。因为已经在请求 URL 中添加了要发送给服务器的数

据(city 和 state),所以请求中不需要发送任何数据。这样就发出了请求,服务器按照您的要求工作。

处理响应

现在要面对服务器的响应了。现在只要知道两点:

 什么也不要做,直到 tate 属性的值等于 4。

 服务器将把响应填充到 seText 属性中。

如:

function updatePage() {

if (tate == 4) {

var response = seText;

mentById("zipCode").value = response;

}

}

它等待服务器调用,如果是就绪状态,则使用服务器返回的值(这里是用户输入的城市和州的 ZIP 编码)设置另一个表单字段的值。

连接 Web 表单

一个 JavaScript 方法捕捉用户输入表单的信息并将其发送到服务器,另一个 JavaScript 方法监听和处理响应,并在响应返回时设置字段的值。所有这些实际上都依赖于调用 第一个

JavaScript 方法,它启动了整个过程。最明显的办法是在 HTML 表单中增加一个按钮,但这是 2001 年的办法,您不这样认为吗?还是像下面这样利用 JavaScript 技术吧。

City:

onChange="callServer();" />

State:

onChange="callServer();" />

Zip Code:

如果感觉这像是一段相当普通的代码,那就对了,正是如此!当用户在 city 或 state 字段中输入新的值时,callServer() 方法就被触发,于是 Ajax 开始运行了。


本文标签: 服务器 响应 请求 使用 浏览器