`
flare
  • 浏览: 124681 次
  • 性别: 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没什么关系

相关推荐

    Ext.Ajax.request跨域

    标题"Ext.Ajax.request跨域"指出我们将探讨如何使用ExtJS库中的Ajax模块进行跨域请求。Ext.Ajax.request是ExtJS提供的一种发起Ajax请求的方式,它允许开发者向服务器发送异步HTTP请求。然而,由于浏览器的同源策略...

    Ext.Ajax.request 小问题收集

    这篇文章将深入探讨`Ext.Ajax.request`的使用,以及在实际应用中可能遇到的小问题。 首先,`Ext.Ajax.request`的基本语法如下: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', // 可选值有...

    Ext2.0.2的Ajax请求拦截示例

    然而,如果我们需要为整个应用的Ajax请求设置统一的拦截器,可以使用`Ext.Ajax.on`方法来监听`beforerequest`和`requestcomplete`事件: ```javascript Ext.Ajax.on('beforerequest', function(connection, options...

    Ext_CrossDomain:Ext跨域的几种方法

    ExtJS,作为一个流行的JavaScript组件库,也提供了多种跨域解决方案。本篇文章将详细介绍在ExtJS中实现跨域的几种方法。 1. JSONP(JSON with Padding) JSONP是一种广泛使用的跨域技术,适用于GET请求。它的原理是...

    Ext2.0 中文文档

    适配器(Adapters)在EXT中扮演着关键角色,它们帮助EXT与不同版本的jQuery或其他JavaScript库共存,提供兼容性解决方案。 EXT2.0的学习路径建议从基本的Element操作和事件处理开始,逐步掌握Widgets的使用,然后...

    ajax强大的ajax

    《征服Ajax - Web20开发技术详解试读版.pdf》可能涵盖了如何利用Ajax技术构建Web2.0应用程序的实践指南,包括使用Ajax的最佳实践、解决跨域问题、优化Ajax性能等方面的内容。 综上所述,Ajax技术在现代Web开发中...

    Ext 2.3中文文档-API

    10. **工具提示和提示框**:EXT提供了多种提示信息的解决方案,如Tip、Tooltip和MessageBox,文档中会详细解释它们的使用。 通过阅读和理解这份Ext 2.3中文文档-API,开发者不仅可以深入理解EXT的底层机制,还能...

    Ext 官方的完整Demo

    7. **Ajax和JSONP**:Ext提供了一套完整的Ajax解决方案,包括异步数据请求和JSONP跨域数据获取。Demo中会展示如何使用Ajax和JSONP来与服务器通信。 8. **国际化支持**:Ext支持多语言应用,提供了方便的国际化工具...

    EXT上传附件

    EXT库通常与Sencha Touch或Ext JS框架一起使用,这些框架提供了完整的前端解决方案,用于构建响应式的桌面和移动应用程序。在EXT应用中实现文件上传,通常会涉及EXT的FormPanel组件和Ajax提交方式。 首先,你需要在...

    EXT异步提交FORM表单

    - **跨域问题**:如果EXT所在的域名与后端服务器的域名不一致,则需要处理跨域问题。可以采用CORS机制或JSONP方式解决。 - **安全性考虑**:对于敏感操作如修改密码等,应当增加额外的安全验证措施,例如验证码、双...

    extjs中文教程 ajax

    在Ajax和Java集成部分,你可能会接触到JSONP(JSON with Padding)或CORS(Cross-Origin Resource Sharing)等跨域解决方案,以便在不同域名之间安全地交换数据。此外,还可能涵盖Spring MVC或其他Java框架与ExtJS的...

    ajaxupload.js上传图片

    2. **跨域问题**:Ajax上传仅限于同源策略,若要跨域上传,需使用CORS或其他解决方案。 3. **安全考虑**:在服务器端,务必验证上传文件的类型和大小,防止恶意文件上传。 4. **用户体验**:提供明确的上传进度...

    Apress.Pro.Ajax.and.Java.Frameworks.Jul.2006.HAPPY.NEW.YEAR.rar

    JSON-P(JSON with Padding)也可能被提及,这是一种跨域数据交互的解决方案,适合于那些不支持CORS(Cross-Origin Resource Sharing)的旧浏览器。 最后,性能优化和最佳实践也是不可或缺的部分。这包括了减少HTTP...

    ThinkPHP 5.1 跨域配置方法

    在Web开发中,跨域资源共享(Cross-Origin Resource Sharing, CORS)是一个重要的概念,它允许一个域(域名、协议或端口...通过上述配置,可以有效解决前端无法访问后端资源的问题,进而提高开发效率和应用的用户体验。

    Ext2.2 实例和官方文档

    4. **Ajax和数据通信**:Ext.Ajax模块提供了与服务器进行异步通信的功能,支持XMLHttpRequest和JSONP跨域请求,方便进行数据交换。 5. **表格和网格**:Ext.grid组件是展示大量数据的强大工具,支持排序、分页、...

    extjs_02_grid显示本地数据、显示跨域数据_.docx

    因此,我们需要使用特定的技术来解决这个问题,例如 JSONP 或者 CORS。 **JSONP 方式:** 假设服务器端提供了一个 JSONP 格式的 API 接口,我们可以使用 ExtJS 的 `Ext.Ajax.request` 方法来请求这些数据: ```...

    Jquery实现跨域异步上传文件总结

    一种常见的解决方案是利用JSONP(JSON with Padding)或者IFrame。JSONP是一种绕过同源策略的方法,通过动态创建`<script>`标签来加载来自不同源的数据。然而,JSONP并不支持POST请求,因此对于文件上传不太适用。 ...

    Ext2.2API中文版(最终完成版)

    这份文档的翻译工作旨在解决现有英文文档对中文用户造成的理解和学习障碍,确保开发者能够准确、高效地利用Ext 2.2的功能。 在Ext 2.2 API中,以下几个核心概念和技术是至关重要的: 1. **组件系统**:Ext的核心是...

    JSP+ext+人力资源管理系统javalearnsa资料分享

    综上所述,"JSP+EXT+人力资源管理系统"结合了服务器端的强大处理能力和客户端的丰富交互体验,为开发高效、易用的人力资源管理解决方案提供了坚实的基础。通过学习和掌握这两种技术,开发者能够构建出满足企业需求的...

    jQuery.form插件的使用及跨域异步上传文件

    一种解决方案是,服务端不直接向客户端返回数据,而是返回一个回调地址,然后客户端通过AJAX请求这个回调地址,从而实现间接的数据传输。这种方法绕过了浏览器的同源策略限制。 具体到客户端的实现,是通过以下方式...

Global site tag (gtag.js) - Google Analytics