使用AJAX构建更优秀的Web应用程序(1)(2)
注意
在这个示例应用程序中,AjaxClient.aspx页面是用户接口,AjaxServer.aspx则负责提供每一个用户请求时的数据。要特别注意的是,AjaxServer.aspx页面不应该包含任何HTML。你可以测试一下如果页面包含HTML将会发生什么。
open方法的第一个参数(见上面表格中的Open函数)指示当前操作为一个GET操作或是POST操作。在进行简单的数据检索时,一般使用GET。当向外传输的数据包大于512字节且操作包括服务器端活动(如插入,更新等)时,一般使用Post。接下来,我们看一下"url"参数。这个参数可以是一个完整的url也可以是一个相对url。在上面例子中,使用的是相对的url。"asyncFlag"参数指示在执行send方法后是否立即处理到来的脚本(这意味着不必等待是否有响应)。最后两个参数分别是"username"和"password",如果"url"中提供这些数据的话。
另一个重要的方法是send方法,它实际上使用一个消息体发送请求。对于本例而言,它只是发送一个空请求。
[ //实际发送一个空请求 req.send(null); ] |
(三) 属性
在此,应用程序中使用了onreadystatechange:
//这是事件处理器机制;在本例中,"RequestProcessor"即是事件处理器。 req.onreadystatechange=RequestProcessor; |
对于这个应用程序来说,"RequestProcessor"是客户端的事件处理器。现在,在事件处理器内,使用readyState属性来获得各种状态。值4显示已经完成某种处理。现在,在处理结果前,你应该检查状态或statusText以决定操作成功与否。在这个应用程序中,我是以下面方式实现的:
function RequestProcessor()
{
//如果readyState处理"Ready"状态
if(req.readyState == 4)
{
//返回的状态代码200意味着一切顺利
if(req.status == 200)
{
//如果responseText不空
//req.responseText实际上是一个由AJAXServer.aspx的"Response.Write ("" + sbXML.ToString() + "");"方法编写的字符串
if(req.responseText != "")
{
populateList(req.responseXML);
}
else
{
clearSelect(publishedBooks);
}
}
}
return true;
} |
注意 对象req被声明为一个页面级的变量:
var req = new ActiveXObject("Microsoft.XMLHTTP");
|







