Extjs学习笔记(八) Ajax

Ext.Ajax 是 Ext.data.Connection的一个子类,提供了用简单的方式进行Ajax的功能实现
1.主要方法 
    abort : 终止一个没有完成Ajax请求
    isLoading : 判断指定的Ajax请求是不是正在运行
    paresStatus : 返回请求响应的代码
    request : 发送服务器请求 -----> 重点

 

//eval()

执行括号内部的字符串

如:eval("alert(''hello)")

 

Js代码  收藏代码
  1. (function(){  
  2.     Ext.onReady(function(){  
  3.         Ext.Ajax.request({  
  4.             url : 'person.jsp',  
  5.             params:{id:'01'},  
  6.             method : 'POST',  
  7.             timeout :3000,  
  8.             success :function(response , options){  
  9.                 alert(eval(response.responseText)[0].name);  
  10.             },  
  11.             failure  :function(response , options){  
  12.                 alert(response.responseText+" "+options)  
  13.             }  
  14.         });  
  15.     })  
  16. })()  

 

1.1 Ext.Ajax.request form

person.jsp

html:

Html代码  收藏代码
  1. <form id="myform">  
  2.             Name:  
  3.             <input type="text" name="name">  
  4.             <br>  
  5.             Pass:  
  6.             <input type="password" name="pass">  
  7.             <br>  
  8.             <input type="button" value="login" id="b">  
  9.         </form>  

 

ajaxform.js:

Js代码  收藏代码
  1. (function(){  
  2.     Ext.onReady(function(){  
  3.         Ext.get('b').on("click",function(){  
  4.             Ext.Ajax.request({  
  5.                 url : 'person.jsp',  
  6.                 params:{id:'01'},  
  7.                 method : 'POST',  
  8.                 timeout :3000,  
  9.                 form:"myform",  
  10.                 success :function(response , options){  
  11.                     alert(eval(response.responseText)[0].name);  
  12.                 },  
  13.                 failure  :function(response , options){  
  14.                     alert(response.responseText+" "+options)  
  15.                 }  
  16.             });  
  17.         })  
  18.     })  
  19. })()  

 

2.Ext.ElementLoader     
    方便我们重新构建页面
    load方法

http://adminstrator:8080/extjs4/GetTimeServlet

返回内容: 2012年7月1日

JS:

Js代码  收藏代码
  1. Ext.onReady(function(){  
  2.     Ext.get('b1').on("click",function(){  
  3.         var time = Ext.get("time").getLoader();  
  4.         time.load({  
  5.             url:'http://adminstrator:8080/extjs4/GetTimeServlet',  
  6.             renderer:function(loader,response,request){  
  7.                 var time = response.responseText;  
  8.                 Ext.getDom("time").value = time;  
  9.             }  
  10.         });  
  11.     });  
  12. });  

 


    startAutoRefresh 方法

自动刷新,去后台刷新。

/extjs4/GetIServlet返回:一个累加器 :计数器1,计数器2

 

Js代码  收藏代码
  1. Ext.get('b2').on("click",function(){  
  2.     var i = Ext.get('i').getLoader();  
  3.     i.startAutoRefresh(1000,{  
  4.         url:'/extjs4/GetIServlet',  
  5.         renderer:function(loader,response,request){  
  6.             var i = response.responseText;  
  7.             Ext.getDom("i").value = i;  
  8.         }             
  9.     });  
  10. });  

jsonData,属性将字符串参数 按照JSON格式传到后台。
3.多级联动菜单   

html:

Html代码  收藏代码
  1.               <select name="city" id="city">  
  2.     <option value="beij" selected>  
  3.         北京市  
  4.     </option>  
  5.     <option value="tianj">  
  6.         天津市  
  7.     </option>  
  8. </select>  
  9. <select name="area" id="area">  
  10.     <option value="def" selected>  
  11.         -----------  
  12.     </option>  
  13. </select>  

 

js:

Js代码  收藏代码
    1. (function(){   
    2.     //创建HTMLElement  
    3.     function createChild(value,name){  
    4.         var el = document.createElement("option");  
    5.         el.setAttribute("value",value);  
    6.         el.appendChild(document.createTextNode(name));  
    7.         return el;  
    8.     }  
    9.     var data = {};  
    10.       
    11.     Ext.onReady(function(){  
    12.         //1.得到city这个dom对象  
    13.         var cityObj = Ext.get("city");  
    14.         //2.我们为这个city对象注册一个change  
    15.         cityObj.on("change",function(e,select){  
    16.             //3.得到改变后的数值  
    17.             var ids =  select.options[select.selectedIndex].value;  
    18.             //3.1 他先去前台的缓存变量中查数据,当没有的时候在去后台拿  
    19.             if(data["city"]){  
    20.                 //直接操作  
    21.             }else{  
    22.                 //做ajax  
    23.             }  
    24.             //4.ajax请求把后台数据拿过来  
    25.             Ext.Ajax.request({  
    26.                 url:'/extjs4/MenuServlet',  
    27.                 params:{ids:ids},  
    28.                 method:'post',  
    29.                 timeout:4000,  
    30.                 success:function(response,opts){  
    31.                     var obj = eval(response.responseText);  
    32.                     //5.得到地区的哪个对象area DOM  
    33.                     var oldObj = Ext.get("area").dom;  
    34.                     //6.清除里面项  
    35.                     while(oldObj.length>0){  
    36.                         oldObj.innerHTML= "";  
    37.                     }  
    38.                     //7.加入新的项  
    39.                     Ext.Array.each(obj,function(o){  
    40.                         Ext.get('area').dom.appendChild(createChild(o.valueOf(),o.name));  
    41.                     });  
    42.                     //8.把从数据库拿到的数据进行前台页面缓存  
    43.                 }  
    44.             });  
    45.         });  
    46.     });  
    47. })();  

posted on 2013-12-01 17:20  kangxuebin  阅读(209)  评论(0)    收藏  举报

导航