龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

使用AJAX构建更优秀的Web应用程序(1)(3)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
警告 请求目的的url必须与客户端脚本处于同一个域中。原因是,XMLHttpRequest对象采用与客户端脚本一致的封装技术。在大多数支持这种功能的浏览器上,拥

警告

请求目的的url必须与客户端脚本处于同一个域中。原因是,XMLHttpRequest对象采用与客户端脚本一致的封装技术。在大多数支持这种功能的浏览器上,拥有存取XMLHttpRequest对象的脚本的页面都需要使用http:协议检索。这意味着,你无法在一个本地硬盘上(file:协议)进行页面测试。

三、实际问题

在AJAX中,如果网络或远程服务器出现中断,会发生什么呢?实际上,存在两个主要问题;默认地,它们并没有在XMLHttpRequest对象中得到解决。这两个主要问题是:

1.处理延迟:如果网络或远程服务器耗费较多时间,那么这个问题如何与你的AJAX应用程序相联系呢?

2.响应顺序:潜在地,网络(或服务器)会不断变化。这意味着,响应可能不会以与请求相同的顺序返回。

为了处理上面这两个问题,程序员必须编写代码来解决这个问题。对于第一个问题,一种可能的方案如下所示:

function callInProgress(xmlhttp) {
 switch ( xmlhttp.readyState ) {
case 1,2,3:
 return true;
 break;
 //Case 4和0
default:
 return false;
 break;
 }
}

现在,在调用send()前,我可以先检查一下是否该对象正处于忙态:

if ( !callInProgress(xmlhttp) ) {
 xmlhttp.send(null);
} else {
 alert("I'm busy. Wait a moment");
}

(一) 支持Ajax技术的浏览器

◆微软Internet Explorer版本5.0及以上版本,和基于它的浏览器(Mac OS版本不支持)

◆基于Gecko的浏览器,如Mozilla,Mozilla Firefox,SeaMonkey,Epiphany,Galeon和Netscape版本7.1及以上版本

◆实现KHTML API版本3.2及以上版本的浏览器,包括Konqueror版本3.2及以上版本,还有Apple Safari版本1.2及以上版本

◆Opera浏览器版本8.0及以上版本,包括Opera Mobile浏览器版本8.0及以上版本

(二) 不支持Ajax技术的浏览器

◆Opera 7及以下版本

◆微软Internet Explorer 4.0及以下版本

◆基于文本的浏览器,如Lynx和Links

◆没有可视化实现的浏览器

◆1997年以前的浏览器

(三) 本文示例应用程序特定需求

软件要求:

1.ASP.Net 2.0;

2.MS SQL Server 2000,并要求相应的pubs数据库设置;

3.改变web.config文件中的DB连接字符串("CONN_STRING"键)。

<APPSETTINGS>
<ADD value="data source=cal-slcu2-196;Database=pubs;User=sa;PWD=sa" key="CONN_STRING" />
</APPSETTINGS> 

精彩图集

赞助商链接