使用 Dojo 的 Ajax 应用开发进阶教程,第 7 部分: Dojo 核心库深入介绍
2010-09-26 00:00:00 来源:WEB开发网清单 2. dojo.io.script.get() 的使用
dojo.io.script.get({
url : "http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&
query=ajax&output=json",
jsonp : "callback",
load : function(data) {
alert(data.ResultSet.Result[0].Title);
}
});
代码清单 2 中使用了雅虎的 Web 搜索服务,通过属性 jsonp指定了回调 JavaScript 方法的名称由参数 callback来指定。可以看到,dojo.io.script.get()的使用方式基本上和 dojo.xhrGet()相同。Dojo 为开发人员屏蔽了底层实现相关的细节。
iframe
除了脚本之外的另外一种 I/O 请求方式是使用 iframe。使用 iframe 与脚本一样,没有跨域访问的限制,而且除了 HTTP GET 请求之外,还可以发送 HTTP POST 请求。使用 iframe 的一个典型的场景就是进行文件上传。使用 XMLHTTPRequest 没有比较好的实现方式,一般需要依赖 Applet 或 Flash 等插件支持。如果不依赖浏览器插件的话,使用 iframe 是最好的选择,因为浏览器本身已经提供了文件选择框用来选择并上传文件。
Dojo 核心库提供的 iframe I/O 请求支持封装在模块 dojo.io.iframe中。其中最重要的就是 dojo.io.iframe.send()方法用来通过 iframe 发出请求。与 dojo.io.script.get()方法相同,该方法的参数也是一个 JavaScript 对象。需要注意的是属性 handleAs的值只能是 text、html、xml、json和 javascript。对于 text、json和 javascript这三种结果返回格式来说,服务器端返回的必须是一个 HTML 文件。该 HTML 页面中必须包含一个 <textarea> 元素,<textarea> 中的内容才是真正的返回数据。如果应用中使用 Dojo 的 iframe 来传输数据的话,在服务器端的实现要格外注意这一点。使用 dojo.io.iframe进行文件上传的实现见 代码清单 3。
更多精彩
赞助商链接