您的位置:首页 > 其它

Ajax 的请求与响应

2007-11-30 14:31 127 查看
发出请求

主要包括5个部分

从 Web 表单中获取需要的数据。

建立要连接的 URL。

打开到服务器的连接。

设置服务器在完成后要运行的函数。

发送请求。

下面为代码

function callServer() {
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
if ((city == null) || (city == "")) return;
if ((state == null) || (state == "")) return;
var url = "/scripts/getZipCode.php?city=" + escape(city) + "&state=" + escape(state);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage;
xmlHttp.send(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),所以请求中不需要发送任何数据。这样就发出了请求,服务器按照您的要求工作。

如果没有发现任何新鲜的东西,您应该体会到这是多么简单明了!除了牢牢记住 Ajax 的异步特性外,这些内容都相当简单。应该感激 Ajax 使您能够专心编写漂亮的应用程序和界面,而不用担心复杂的 HTTP 请求/响应代码。

处理响应

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

什么也不要做,直到
xmlHttp.readyState
属性的值等于 4。

服务器将把响应填充到
xmlHttp.responseText
属性中。

其中的第一点,即就绪状态,将在下一篇文章中详细讨论,您将进一步了解 HTTP 请求的阶段,可能比您设想的还多。现在只要检查一个特定的值(4)就可以了(下一期文章中还有更多的值要介绍)。第二点,使用
xmlHttp.responseText
属性获得服务器的响应,这很简单。

function updatePage() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
document.getElementById("zipCode").value = response;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: