简单请求的示例

代码清单2-4 simpleRequest.html页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Simple XMLHttpRequest</title>

<script type="text/javascript">

var xmlHttp;

 

function createXMLHttpRequest() {

    if (window.ActiveXObject) {

        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    }

    else if (window.XMLHttpRequest) {

        xmlHttp = new XMLHttpRequest();

    }

}

 

function startRequest() {

    createXMLHttpRequest();

    xmlHttp.onreadystatechange = handleStateChange;

    xmlHttp.open("GET", "simpleResponse.xml", true);

    xmlHttp.send(null);

}

 

function handleStateChange() {

    if(xmlHttp.readyState == 4) {

        if(xmlHttp.status == 200) {

            alert("The server replied with: " + xmlHttp.responseText);

        }

    }

}

</script>

</head>

 

<body>

    <form action="#">

        <input type="button" value="Start Basic Asynchronous Request"

                onclick="startRequest();"/>

    </form>

</body>

</html>

服务器的响应文件simpleResponse.xml只有一行文本。点击HTML页面上的按钮会生成一个警告框,其中显示simpleResponse.xml文件的内容。在2-4中可以看到分别在Internet ExplorerFirefox中显示的包含服务器响应的相同警告框。

对服务器的请求是异步发送的,因此浏览器可以继续响应用户输入,同时在后台等待服务器的响应。如果选择同步操作,而且倘若服务器的响应要花几秒才能到达,浏览器就会表现得很迟钝,在等待期间不能响应用户的输入。这样一来,浏览器好像被冻住一样,无法响应用户输入,而异步做法可以避免这种情况,从而让最终用户有更好的体验。尽管这种改善很细微,但确实很有意义。这样用户就能继续工作,而且服务器会在后台处理先前的请求。

2-4 第一个简单的异步请求

与服务器通信而不打断用户的使用流程,这种能力使开发人员采用多种技术改善用户体验成为可能。例如,假设有一个验证用户输入的应用。用户在输入表单上填写各个字段时,浏览器可以定期地向服务器发送表单值来进行验证,此时并不打断用户,他还可以继续填写余下的表单字段。如果某个验证规则失败,在表单真正发送到服务器进行处理之前,用户就会立即得到通知,这就能大大节省用户的时间,也能减轻服务器上的负载,因为不必在表单提交不成功时完全重建表单的内容。

posted on 2008-02-14 10:15  破曉之陽  阅读(221)  评论(0)    收藏  举报

导航