`
techiewang
  • 浏览: 25391 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Ext Ajax 同步的方法

阅读更多
Ext.Ajax.request参数中并没有同步这个参数,但是很多时候需要同步请求来提供Componnet中的数据,而且没有add方法,比如 checkboxgroup 中动态的check选项,所以应该修改Ext.Ajax.request真正的请求方法Ext.lib.Ajax.request
具体代码来自EXT官方论坛:
Ext.lib.Ajax.request = function(method, uri, cb, data, options) {
    if(options){
        var hs = options.headers;
        if(hs){
            for(var h in hs){
                if(hs.hasOwnProperty(h)){
                    this.initHeader(h, hs[h], false);
                }
            }
        }
        if(options.xmlData){
            if (!hs || !hs['Content-Type']){
                this.initHeader('Content-Type', 'text/xml', false);
            }
            method = (method ? method : (options.method ? options.method : 'POST'));
            data = options.xmlData;
        }else if(options.jsonData){
            if (!hs || !hs['Content-Type']){
                this.initHeader('Content-Type', 'application/json', false);
            }
            method = (method ? method : (options.method ? options.method : 'POST'));
            data = typeof options.jsonData == 'object' ? Ext.encode(options.jsonData) : options.jsonData;
        }
    }

   return this["sync" in options ? "syncRequest" : "asyncRequest"](method, uri, cb, data);//这句制定调用的方法,如果sync传递了就调用syncRequest, 否则调用原来的方法asyncRequest};

syncRequest方法如下:
Ext.lib.Ajax.syncRequest = function(method, uri, callback, postData)
{
    var o = this.getConnectionObject();

    if (!o) {
        return null;
    }
    else {
        o.conn.open(method, uri, false);

        if (this.useDefaultXhrHeader) {
            if (!this.defaultHeaders['X-Requested-With']) {
                this.initHeader('X-Requested-With', this.defaultXhrHeader, true);
            }
        }

        if(postData && this.useDefaultHeader && (!this.hasHeaders || !this.headers['Content-Type'])){
            this.initHeader('Content-Type', this.defaultPostHeader);
        }

        if (this.hasDefaultHeaders || this.hasHeaders) {
            this.setHeader(o);
        }

        o.conn.send(postData || null);
        this.handleTransactionResponse(o, callback);
        return o;
    }
};

调用:
Ext.Ajax.request({
url:'',
scope:this,
sync:true,
success:function(){}
});   


分享到:
评论
2 楼 piaoyaohou 2009-10-27  
我用这个方法,测试始终failure

郁闷!我是使用的Ext3.0

    function syncRequest(method, uri, callback, postData) {
             var o = getConnectionObject() || null;

            if (o) {
                o.conn.open(method, uri, true);

                if (pub.useDefaultXhrHeader) {                    
                	initHeader('X-Requested-With', pub.defaultXhrHeader);
                }

                if(postData && pub.useDefaultHeader && (!pub.headers || !pub.headers[CONTENTTYPE])){
                    initHeader(CONTENTTYPE, pub.defaultPostHeader);
                }

                if (pub.defaultHeaders || pub.headers) {
                    setHeader(o);
                }

                //handleReadyState(o, callback);
                o.conn.send(postData || null);
                handleTransactionResponse(o, callback);
            }
            return o;
        }
        

1 楼 techiewang 2009-09-23  
ext ajax 同步官方网址:
http://www.extjs.com/forum/showthread.php?p=195659

相关推荐

    Ext AJAx的同步请求方法

    这是一个对Ext中的AJAx进行扩展了的方法,使其可以支持同步访问

    Ext.Ajax.request2.x实现同步请求

    NULL 博文链接:https://linwei-211.iteye.com/blog/1567277

    extjs ajax同步请求所需js

    extjs ajax同步请求所需js extjs ajax同步请求所需js

    ext-basex.js 进行Ext.Ajax.request 同步请求 FF无法正常

    NULL 博文链接:https://lingf.iteye.com/blog/1821225

    Ext.Ajax.request 小问题收集

    Ext.Ajax.request同步请求包 博文链接:https://lingf.iteye.com/blog/1195912

    Extjs ajax同步请求时post方式参数发送方式

    ajax同步请求一般下面这样: 代码如下: var conn = Ext.lib.Ajax.getConnectionObject().conn; conn.open(“POST”, ‘http://localhost:8080/struts2study/TreeDDGet?node=-1’,false); // 这里的conn对象其实就是 ...

    Ext 开发指南 学习资料

    使用同步ajax B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的讨论 C.3. 怎么看文档附件里的范例 C.4. ext开发计划 D. 贡献者列表 D.1. 感谢[飘]的大力...

    Ext+Java 树

    本例子采用ext3.0+java开发的树结构,完全的动态管理,树结构一旦形成,支持右键菜单,进行增删改,增加,就在树当前节点下创建一个新的节点,利用ajax同步到数据库,总之类似于资源管理器的增删改,由于本人是初学...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    在使用myeclipse过程中,我使用ajax同步请求传递参数到后台却出现中文乱码,这是我解决问题的代码,希望对您有所帮助

    PHP 解决session死锁的方法

    起初以为是Ext 框架设置了ajax同步造成的。后来发现时session 死锁造成其他控制器在等待session 完成后才能操作。(主要是用户登录判断需要更新session)当PHP 处理大数据量操作时 不能及时操作完成 这时候又有访问...

    jquery-1.1.3 效率提高800%

    这是在保证数据的同步性比交互更重要的情况下的一种更好的方法。 var html = $.ajax({ url: "some.php", async: false }).responseText;向服务器发送xml文档数据。通过设置processData选项为false...

    异步HttpClient

    该组件是单线程非阻塞式的,类似于JS中的ajax请求。都使用单线程异步回调的方式。目前该组件已经初步测试通过。如果大家也需要这样的组件,可以下载尝试一下。所有关键注释都已经写了,如有不明白可以发送邮件 ath....

    KODExplorer 芒果云-资源管理器

    - 拖动url——创建ext app - 文件管理,树目录变化后(增删改)自动同步到文件列表 - 文件管理,文件列表变化后(增删改)自动同步到树目录 - 中文用户名限制 - 对话框打开关闭动画 - 其他多处优化 ####fix ...

Global site tag (gtag.js) - Google Analytics