`
flare
  • 浏览: 123252 次
  • 性别: Icon_minigender_1
  • 来自: 天尽头
社区版块
存档分类
最新评论

Ext对ajax跨域问题的解决方案

阅读更多
跨域访问是ajax中比较头疼的事情。
Ext的Ext.data.ScriptTagProxy对象是用于解决这个问题的。
这个对象实际上做的事情就是使用动态script标签来处理跨域的请求问题。

script标签的主要优点在于它并不受Web浏览器跨域安全限制的束缚,以及比
XMLHttpRequest具备更好的浏览器兼容性。


ScriptTagProxy的使用方式比较简单,只用在构造函数中设置一个url。
示例代码:
    var ds = new Ext.data.Store({
        proxy: new Ext.data.ScriptTagProxy({
            url: 'http://extjs.com/forum/topics-remote.php'
        }),
        reader: new Ext.data.JsonReader({
            root: 'topics',
            totalProperty: 'totalCount',
            id: 'post_id'
        }, [
            {name: 'title', mapping: 'topic_title'},
            {name: 'topicId', mapping: 'topic_id'},
            {name: 'author', mapping: 'author'},
            {name: 'lastPost', mapping: 'post_time', type: 'date', dateFormat: 'timestamp'},
            {name: 'excerpt', mapping: 'post_text'}
        ])
    });

这个url返回的应该是javascript类型的内容,java代码示例:
boolean scriptTag = false;
String cb = request.getParameter("callback");
if (cb != null) {
    scriptTag = true;
    response.setContentType("text/javascript");
} else {
    response.setContentType("application/x-json");
}
Writer out = response.getWriter();
if (scriptTag) {
    out.write(cb + "(");
}
out.print(dataBlock.toJsonString());
if (scriptTag) {
    out.write(");");
}

ScriptTagProxy会把这段javascript动态添加到页面中,如果javascript中的内容是json格式的,
可以用Ext.data.JsonReader进行解析。

在地址栏中输入
http://extjs.com/forum/topics-remote.php?callback=strcall1001
就可以看到ext示例中的返回的javascript内容。
分享到:
评论
4 楼 austin 2008-09-02  
我用的是 Ext.Ajax.request ,请问如何实现跨域哦?
3 楼 jun5091 2008-09-01  
大哥我不懂
官方例子里:        proxy: new Ext.data.ScriptTagProxy({
            url: 'http://extjs.com/forum/topics-browse-remote.php'
        })
我就是把官方例子里的 http://extjs.com/forum/topics-browse-remote.php 改成了http://192.168.0.144/7190/ext-2.2/ext-2.2/examples/layout/json.asp 但是里面数据是相同的
不知道为什么我的就报错了
2 楼 flare 2007-12-22  
to afcn0 : script标签的方式是通用的,我这篇文章是说明在ext中如何使用这种方法。
1 楼 afcn0 2007-12-22  
看dlee大哥那片文章去,这种解决方法和ext没什么关系

相关推荐

Global site tag (gtag.js) - Google Analytics