之前在项目中,遇到跨域请求或POST数据,一般都是采用jsonp的方式,但是毕竟IE地址栏的长度是有限的,经过测试,经常在IE6下发生数据丢失这样莫名的问题。
重新选择解决办法,网上提供了一种Cross-domain AJAX using Flash 的方案,相关项目地址为: http://blog.s135.com/ajaxcdr/
AJAXCDR 拥有两个文件:ajaxcdr.js 和 ajaxcdr.swf,AJAXCDR 拥有一个 JavaScript 函数 AjaxCrossDomainRequest() 和一个全局变量 AjaxCrossDomainResponse。
ajaxcdr.js 中,定义的function $ 与jQuery 相冲突,首先替换掉源文件中的两处 $:
在和jQuery结合使用的过程中,有几个地方是需要注意的:
1. 首先,也是最重要的: crossdomain.xml 放置的位置为跨域的网站所在站点的根目录(注意:不是网站的根目录)。比方说A站点跨域请求B站点的内容,那么,crossdomain.xml 必须放置在B站点的根目录下。
2. 原来的ajaxcdr.js 编码格式 ANSI编码,需将此编码格式更改为UTF-8 编码格式。否则在IE中会出现fs.XmlHttp “object doesn't support this property or method” 的错误
3. 页面引用 ajaxcdr.js 记得放在页面的最后边</body> 结束符之前。否则,在IE下无法生效。
我已经将修改过的ajaxcdr上传至我的资源,地址为 http://spring21st.download.csdn.net/。