`
xsl2007
  • 浏览: 134568 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ext.Ajax.request的同步请求实现

阅读更多
Extjs2.x   实现同步方法
Ext.Ajax.request实现同步请求是通过修改ext-base.js中的Ext.lib.Ajax.request来实现同步请求:
  /**
Adding a synchronous request to the Ext asynchronous only mode of operation.

History: coded from Ext 2.2.

Additional configs.

@param {Object} options
@config {Mixed} [sync] include this for a synchronous request
*/
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;
        }
    }
 [color=red]return this["sync" in options ? "syncRequest" : "asyncRequest"](method, uri, cb, data););[/color]//这句制定调用的方法,如果sync传递了就调用syncRequest, 否则调用原来的方法asyncRequest};

};

把下面这个方法加上,直接加在asyncRequest方法后面就可以,形式和asyncRequest相同,调用时如果需要同步调用加上sync:true,属性即可
/**
Synchronous request.  
  
@param {Object} method
@param {Object} uri
@param {Object} callback
@param {Object} postData
*/
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;
    }
};

extjs3.0 实现同步方法
下载ext-basex.rar,解压,引入工程,在 Ext.Ajax.request方法中加入
async : false,   //ASYNC 是否异步( TRUE 异步 FALSE 同步) 
,  
分享到:
评论

相关推荐

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

    本文将详细解析如何利用`Ext.Ajax.request`实现同步请求,并探讨其背后的原理和注意事项。 首先,我们需要理解Ajax的本质,它是Asynchronous JavaScript and XML的缩写,虽然现在XML已不再是主要的数据交换格式,但...

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

    标题提到的"ext-basex.js进行Ext.Ajax.request同步请求 FF无法正常"问题,涉及到浏览器兼容性和异步/同步请求的理解。 `Ext.Ajax.request`是ExtJS中的一个方法,用于发起Ajax(异步JavaScript和XML)请求。它可以...

    Ext.Ajax.request 小问题收集

    在标题提到的"同步请求包"问题中,EXTJS默认情况下,`Ext.Ajax.request`是异步执行的,但有时我们可能需要同步请求,例如在某些数据初始化场景。要实现同步请求,需要设置配置项`async: false`: ```javascript Ext...

    ExtJs的Ext.Ajax.request实现waitMsg等待提示效果

    ExtJs提供了Ext.Ajax.request方法来进行Ajax请求,但默认情况下,该方法不支持waitMsg属性,不像fp.form.submit方法提供了waitTitle和waitMsg属性来实现等待提示。为了解决这一限制,我们可以采用Ext.MessageBox的...

    extjs ajax同步请求所需js

    标题中提到的"extjs ajax同步请求所需js"是指ExtJS框架中用于执行同步Ajax请求的相关JavaScript代码。在ExtJS中,Ajax请求通常通过`Ext.Ajax`对象来实现。与传统的异步请求不同,同步请求会阻塞浏览器,直到请求完成...

    Ext3.1 Ajax 精简包以及使用方法

    如果需要同步请求,可以在`request`方法中设置`async: false`。 6. **处理错误:** 除了`failure`回调外,还可以使用`Ext.Ajax.onError`全局监听器来捕获所有Ajax请求的错误。 7. **取消请求:** 如果需要取消正在...

    ext判断该用户是否在数据库中存在

    在上面的代码中,我们可以看到使用了 Ext.Ajax.request 方法来发送 AJAX 请求,检测用户名是否已经存在于数据库中。在服务器端,可以使用数据库查询来检测用户名是否已经存在于数据库中。如果用户名已经存在,则返回...

    extjs3.0 ajax 同步请求

    ### ExtJS 3.0 AJAX 同步请求详解 #### 一、引言 ExtJS 是一款基于 JavaScript 的开源框架,用于构建现代化的 Web 应用。它提供了丰富的 UI 组件以及强大的数据处理能力,使得开发者能够快速地开发出高质量的企业...

    ext/ajax开发资料

    EXT的Ajax功能还支持配置各种选项,如设置请求头、超时时间、同步/异步请求、数据编码方式等。例如,你可以设定请求头来添加自定义的HTTP头部信息: ```javascript headers: { 'Content-Type': 'application/json' ...

    extjs对ajax的支持文档

    5. **异步与同步请求**: - 默认情况下,Ajax请求是异步的,这意味着浏览器不会等待响应,而是继续执行其他代码。如果需要等待响应,可以设置`async`为`false`。 6. **缓存控制**: - Ajax请求可能会受到浏览器...

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

    但本文讨论的是同步请求,在Extjs中,同步请求应该使用Ext.lib.Ajax.getConnectionObject().conn来获取原生的xmlHttpRequest对象进行操作。 在进行POST请求时,可以通过conn.send方法发送参数。但是,在尝试通过...

    ext/和Ajax结合的说明和例子,获得后台数据,很适合大家

    在ExtJS中,可以通过`Ext.Ajax.request`方法来发送Ajax请求,该方法允许我们配置请求类型(如POST或GET)、URL地址以及回调函数等参数。当请求成功或失败时,可以指定相应的回调函数来进行处理。 #### 四、代码分析...

    ExtJs Ajax 同步问题

    `Ext.Ajax.request()`方法是进行Ajax请求的核心函数,它接受一系列参数,包括URL、方法(GET或POST)、请求数据、回调函数等。同步与异步的控制则通过`async`参数来决定。默认情况下,`async`设置为`true`,意味着...

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

    通过上述方法,我们可以有效地解决在使用ExtJS进行Ajax同步请求时,中文参数出现乱码的问题。关键是保证前后端编码的一致性,以及正确地使用编码与解码函数。此外,还可以考虑在服务器端配置文件中设置统一的字符集...

    基于ext的div拖动

    你可以使用`Ext.Ajax.request`方法发送异步请求,或者配置`Ext.data.Store`以自动加载和保存数据。 例如,使用`Ext.Ajax.request`获取数据: ```javascript Ext.Ajax.request({ url: 'your/api/url', method: '...

    ajax常用框架api文档

    `Ext.Ajax.request()`方法类似于jQuery的`$.ajax()`,可以定制各种请求参数。此外,它还提供了异步操作的便利性,如`Ext.data.Store`的自动加载和同步。 4. **MooTools**:MooTools的Ajax模块提供了`Request`类,...

    ExtJs事件处理 ajax

    Ext.Ajax.request({ url: 'your-url', method: 'GET', success: function(response) { var result = Ext.decode(response.responseText); // 处理结果 }, failure: function(response) { // 处理失败情况 ...

    ExtJs异步请求和特殊用途

    如果希望同步请求,可将其设置为false。 - `timeout`可以设置请求超时时间。 - `jsonData`或`xmlData`可以用来直接传递JSON或XML数据,避免手动编码。 - `useDefaultXhrHeader`控制是否发送默认的`X-Requested-...

    完成的 Ajax 提交表单

    2. **Ajax提交表单**:当表单需要异步提交时,可以利用`Ext.Ajax.request`方法。这个方法接受一个配置对象,其中包含了URL、方法(GET或POST)、数据、成功和失败的回调函数等参数。在本例中,你可能将表单的提交...

Global site tag (gtag.js) - Google Analytics