首页 > 代码库 > Sencha Toucha之Ext.Ajax

Sencha Toucha之Ext.Ajax

Ext.Ajax是Ext.data.Connection的hi一个单实例,不需要使用new或者Ext.create方法创建实例后再使用。

类的继承关系为:

Ext.Base

Ext.data.Connection

Ext.Ajax

 

Ext.Ajax.request({    url: ‘page.php‘,    params: {        id: 1    },    success: function(response){        var text = response.responseText;        // process server response here    }});
 
可以直接通过设置Ext.Ajax类的选项来配置属性:
Ext.Ajax.setTimeout(60000); // 60 seconds
 
Ext.Ajax.setTimeout(120000); // 120 secondsExt.Ajax.request({    url: ‘page.aspx‘,    timeout: 60000});
 
一般来说这个类会用于你所有的Ajax请求。
 
 
一般情况下,在配置对象中定义好了地址和回调函数就可以使用Ext.Ajax了。
Ext.Ajax有三个回调函数,分别是success,failure和callback。
 
Ext.Ajax默认是以POST方式提交的,如果要修改为GET方法,可以通过method配置项来实现,它的值可以是POST或者GET,注意全部为大写字母。
 

Ext.Aiax.request({

     url:‘myUrl‘,

     method:‘POST‘,

     params:{

          username:‘king‘,

          password:‘king‘

     },

     callback:function(response){

          console.log(response.responseText);

     }

});

 

请求自动地将param对象打包为form数据,是作为POST请求的一部分发送出去。

 

当发送一个GET请求时,许多web服务器将会缓存一个应答,并总是将这个相同的应答发送给你,虽然加快了web速度,但是并不总是想要的。

 

disableCaching: false,

web根据Header不同,返回不同格式的数据

下面是获得JSON数据

Ext.Aiax.request({

     url:‘myUrl‘,

     method:‘GET‘,

     headers:{"Content-type":"application/json"},

     params:{

          username:‘king‘,

          password:‘king‘

     },

     callback:function(response){

          console.log(response.responseText);

     }

});

 

callback回调

 

当Ajax请求失败时,Ext.Ajax可以帮你指定所有场景下的callback回调函数

Ext.Ajax.request({

     url:‘myUrl‘,

     success:function(response){

          console.log(‘请求成功‘);    

     },

     failure:function(response){

          console.log(‘请求失败‘);

     },

     callback:function(response){

          console.log(‘数据‘);

     }

});

当请求成功时,success函数首先会被调用,然后是callback函数。

当请求失败时,failure函数会被调用,然后是callback函数。

不论请求成功还是失败,callback回调函数总是会执行的。

 

请求超时和中断

当后台服务器响应时间过长而导致请求超时时。failure函数将会被调用,该函数的传递参数request对象中,timeout的属性为true

Ext.Ajax.equest({

     url:‘myUrl‘,

     failure:function(reqponse){

          console.log(reqponse.timeout);

     }

});

缺省情况下,timeout值为30秒,但是你可以通过timeout设置该值,该值单位是毫秒

var myRequest = Ext.Ajax.equest({

     url:‘myUrl‘,

     timeout:5000,  // 5秒超时

     failure:function(reqponse){

          console.log(reqponse.timeout);

     }

});

Ext.Ajax.abort(myRequest);

上面代码中,超时处理函数将被调用,reqponse.aborted属性将设置为true。

Ext.Ajax.request({

     url:‘myUrl‘,

     failure:function(reqponse){

          if(reqponse.timeout){

               alert(‘Timeout‘,‘服务器超时‘);

          }else if(reqponse.aborted){

               alert(‘Aborted‘,‘请求终止‘);

          }else{

               alert(‘Bad‘,‘请求失败‘);

          }

     }

});

Sencha Toucha之Ext.Ajax