跨域Ajax的工具集: Modello.ajax
时间:2007-08-18 来源:linxh
前两个问题可以通过封装 XMLHTTPRequest 对象来解决,
第三个问题的解决方法有很多中,兼容性和移植性比较好的就是在本域服务器上放置
一个中转 proxy 。Modello.ajax 就是提供这套解决方案的工具集。
安装
500)this.width=500;" border=0>urlget 方法
Modello.ajax 使用起来非常的简单,请看下面例子:
500)this.width=500;" border=0>
urlget 各个参数的解释如下
urlget 的返回值:
500)this.width=500;" border=0>Response 对象
Response 对象用于访问响应的各个数据项。它提供接口如下:
大部分情况下,使用 urlget 函数足可以应付,并且它是可以跨浏览器,
跨域使用的。如果你想做一些更底层的操作,Modello.ajax
为你提供两个跨浏览器使用的基类:Connection 和 Request
Connection 类
这是一个静态类,提供跨浏览器的方法返回一个 XMLHTTPRequest 对象。
使用方法如下:
jsproxy
对于跨域调用,Modello.ajax 采用在本域服务器设置一个中转 proxy
的方式。使用 proxy 方式可以不用对个别浏览器进行特殊设置,
不用依赖具体的服务器,并且具备扩展能力等优点。随 Modello.ajax
工具集提供的 proxy 用 php 写成,可运行 php 的服务器都可以安装。
proxy 也可以用其它语言编写,Modello.ajax 有计划在后续版本中提供
python 版的 jsproxy。下面来描述 jsproxy 的设计,
有需要的朋友可以参考来实现其它语言版本的 jsproxy。
jsproxy 接收三个 POST 参数:url, data, headers。url
为目标资源的URL地址;data 为POST数据,如果为空则使用 GET
方法获取资源;headers 附加的请求头部数据。jsproxy
根据这些参数去获取目标资源,然后将收到的响应头部和响应体部全部转发给请求者。
jsproxy 收到的参数是由 Modello.ajax 发出的,字符集为 UTF-8,
处理的时候要注意这点。jsproxy 获取到的响应的字符集有很多种可能的,
在转发响应之前 jsproxy 应该自动检测出当前响应的字符集,
并在转发的响应头部指明。如果忽律这个步骤,请求者收到的响应有可能是乱码。
urlparse, urljoin 函数
urlparse, urljoin 这样的 URL 处理函数在其它脚本语言中很常见,
但在 JavaScript 中却没有。Modello.ajax 提供了这两个函数,
前面提到的 urlget 函数内部就使用了这两个函数。下面来解释他们的用法: