AJAX框架组件的核心是XMLHttpRequest JavaScript对象,它允许客户端开发人员在不中断用户操作、不利用隐藏页面的情况下,通过HTTP发送和接收XML文档。现在,有些人可能会感到恐惧,因为它突然允许那些可能过多地使用了验证窗体和动画图像的客户端开发人员负责传递XML文档和处理HTTP头信息,但是,没有风险就没有收益。我们不用害怕,我将演示如何使用XMLHttpRequest来添加一些以前不可能的、行不通的特性,它同时还减少了错误,提高了产品质量。
JavaScript中的XMLHttpRequest和XML DOM
首先,我们需要建立一些规则。特殊的XMLHttpRequest对象和一般的XML DOM都受到了最新的浏览器(IE、Mozilla、Safari、Opera)的广泛支持,尽管在一般情况下,微软对于自己的实现会稍微增加一些东西,需要某些特殊的处理。尽管我们更多的朋友直接实现了XMLHttpRequest,但是IE还是要求你用相同的属性实例化一个ActiveXObject。在Apple开发者关系站点上可以找到相关的概述和所有特性列表。下面是一个基本的例子:
| var req; function postXML(xmlDoc) { if (window.XMLHttpRequest) req = new XMLHttpRequest(); else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP"); else return; // 失败了 req.open(method, serverURI); req.setRequestHeader(’content-type’, ’text/xml’); req.onreadystatechange = xmlPosted; req.send(xmlDoc); } function xmlPosted() { if (req.readyState != 4) return; if (req.status == 200) { var result = req.responseXML; } else { // 失败了 } } |
| function riskyBusiness() { try { riskyOperation1(); riskyOperation2(); } catch (e) { // e是一个Error类型的对象,至少有两个属性:name和message } finally { // 清除消息 } } window.onerror = handleError; // 捕捉所有错误的安全网 function handleError(message, URI, line) { // 提示用户这个页面可能无法正常响应 return true; // 停止默认的消息 } |