Ext.Ajax是Ext.data.Connection的一個子類,提供了用簡單的方式進行Ajax的功能實現
1.主要方法
abort:終止一個沒有完成的Ajax請求
isLoading:判斷指定的Ajax請求是不是正在進行
paresStatus:返回請求響應的代碼
request:發送服務端請求
2.Ext.ElementLoader(對頁面中DOM元素添加事件)
方便我們重新構建頁面
load方法
startAutoRefresh方法
3.多級聯動菜單
------------------------------------------------------------------------------------
下面這個例子主要講了Ext.Ajax.request方法
request.js
- (function(){
- Ext.onReady(function(){
- Ext.Ajax.request({
- url:'person.jsp',
- params:{id:'01'},
- method:'POST',
- timeout:3000,
- success:function(response,options){
- console.log(eval(response.responseText)[0].name);
- },
- failure:function(response,options){
- console.log(response.responseText,options);
- }
- });//靜態方法
- });
- })();
person.jsp
- <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
- <%
- String id = request.getParameter("id");
- System.out.println();
- if("01".equals(id)){
- response.getWriter().write("[{id:'01',name:'uspcat.com',age:'26',email:'[email protected]'}]");
- }
- %>
運行結果如下:
uspcat.com |
-----------------------------------------------------------------------------------
下面主要講Ext.Ajax.request的form參數,會把表單傳遞過去
ajaxform.js
- (function(){
- Ext.onReady(function(){
- Ext.get('b').on('click',function(){
- Ext.Ajax.request({
- url:'person.jsp',
- params:{id:'01'},
- method:'POST',
- timeout:3000,
- form:"myform",
- success:function(response,options){
- console.log(eval(response.responseText)[0].name);
- },
- failure:function(response,options){
- console.log(response.responseText,options + " " + options );
- }
- });//靜態方法
- });
- });
- })();
lesson8_2.html
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>ajax</title>
- <link rel="stylesheet" type="text/css" href="../extjs-4.1.0/resources/css/ext-all.css"/>
- <script type="text/javascript" src="../extjs-4.1.0/bootstrap.js"></script>
- <script type="text/javascript" src="ajaxform.js"></script>
- </head>
- <body>
- <form id="myform">
- Name:<input type="text" name="name"/><br/>
- Pass:<input type="password" name="pass"/><br/>
- <input type="button" value="login" id="b">
- </form>
- </body>
- </html>
運行結果如下:
-----------------------------------------------------------------------------------
下面主要講Ext.Ajax.request的jsonData參數
jsonData.js
- (function(){
- Ext.onReady(function(){
- var data = "[{id:'01',name:'uspcat.com',age:'26',email:'[email protected]'}]";
- Ext.Ajax.request({
- url:'person2.jsp',
- method:'POST',
- timeout:3000,
- jsonData:data,//向後臺傳的參數
- success:function(response,options){
- console.log(eval(response.responseText)[0].name);
- },
- failure:function(response,options){
- console.log(response.responseText,options);
- }
- });//靜態方法
- });
- })();
person2.jsp
- <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
- <%
- response.getWriter().write("[{id:'01',name:'uspcat.com',age:'26',email:'[email protected]'}]");
- %>
運行結果如下:
------------------------------------------------------------------------------------
這個例子主要講dom元素的load方法
elementLoader.js
- Ext.onReady(function(){
- Ext.get('b1').on('click',function(){
- var time = Ext.get('time').getLoader();//Ext.ElementLoader
- time.load({
- url:'elementLoader.jsp',
- renderer:function(loader,response,request){
- console.log(response.responseText);
- var time = response.responseText;
- Ext.getDom("time").value = time;
- }
- });
- });
- });
lesson8_3.html
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>ajax</title>
- <link rel="stylesheet" type="text/css" href="../extjs-4.1.0/resources/css/ext-all.css"/>
- <script type="text/javascript" src="../extjs-4.1.0/bootstrap.js"></script>
- <script type="text/javascript" src="elementLoader.js"></script>
- </head>
- <body>
- <input type="text" name="time" id="time"/><br/>
- <input type="button" value="get time" id="b1"/>
- </body>
- </html>
elementLoader.jsp
- <%@page language="java" import="java.util.*" contentType="text/html" pageEncoding="UTF-8"%>
- <%
- response.setCharacterEncoding("UTF-8");
- response.getWriter().write("2011年03月10日");
- %>
運行結果:
---------------------------------------------------------------------------------
下面主要講dom元素的getLoader和startAutoRefresh方法
elementLoaderStartAutoRefresh.js
- Ext.onReady(function(){
- Ext.get("btn").on("click",function(){//Ext.ElementLoader
- //對每個對象可以設置各種事件
- var i = Ext.get('i').getLoader();
- i.startAutoRefresh(1000,{
- url:'elementLoaderStartAutoRefresh.jsp',
- renderer:function(loader,response,request){
- console.log(response.responseText);
- var i = response.responseText;
- Ext.getDom("i").value = i;
- }
- });
- });
- });
lesson8_4.html
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>ajax</title>
- <link rel="stylesheet" type="text/css" href="../extjs-4.1.0/resources/css/ext-all.css"/>
- <script type="text/javascript" src="../extjs-4.1.0/bootstrap.js"></script>
- <script type="text/javascript" src="elementLoaderStartAutoRefresh.js"></script>
- </head>
- <body>
- <input type="text" name="i" id="i"/><br/>
- <input type="button" value="get i" id="btn"/>
- </body>
- </html>
elementLoaderStartAutoRefresh.jsp
- <%@page language="java" import="java.util.*" contentType="text/html" pageEncoding="UTF-8"%>
- <%
- int i = 0;
- if(session.getAttribute("i")!=null){
- i = Integer.parseInt(session.getAttribute("i").toString()) + 1;
- session.setAttribute("i",i);
- }else{
- session.setAttribute("i",i);
- }
- response.setCharacterEncoding("UTF-8");
- response.getWriter().write("計算器:" + i++);
- %>
運行結果如下:
----------------------------------------------------------------------------------
聯動菜單
lesson8_5.html
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>ajax</title>
- <link rel="stylesheet" type="text/css" href="../extjs-4.1.0/resources/css/ext-all.css"/>
- <script type="text/javascript" src="../extjs-4.1.0/bootstrap.js"></script>
- <script type="text/javascript" src="menu.js"></script>
- </head>
- <body>
- <select name="city" id="city">
- <option value="beijing" selected>北京市</option>
- <option value="tianjing">天津市</option>
- </select><br/>
- <select name="area" id="area">
- <option value="def" selected>----------</option>
- </select>
- </body>
- </html>
menu.js
- (function(){
- Ext.onReady(function(){
- function createChild(value,name){
- var el = document.createElement("option");
- el.setAttribute("value",value);
- el.appendChild(document.createTextNode(name));
- return el;
- }
- //1.得到city這個dom對象
- var cityObj = Ext.get("city");
- //2.我們爲這個city對象註冊一個change
- cityObj.on("change",function(e,select){
- //3.得到改變後的數值
- var ids = select.options[select.selectedIndex].value;
- //3.1它先去前臺的緩存變量中查數據,當沒有的時候去後臺拿
- //if(data[city]){
- //直接操作
- //}else{
- //做ajax
- //}
- //4.ajax請求把後臺數據拿過來
- Ext.Ajax.request({
- url:'menu.jsp',
- params:{'ids':ids},
- method:'post',
- timeout:4000,
- success:function(response,opts){
- var obj = eval(response.responseText);
- //5.得到地區的那個對象area
- var oldObj = Ext.get("area").dom;//elememt是不能操作,dom是可以操作的
- //6.清除裏面項
- while(oldObj.length > 0){
- oldObj.options.remove(oldObj.length-1);
- }
- //7.加入新的項
- Ext.Array.each(obj,function(o){
- Ext.get("area").dom.appendChild(createChild(o.valueOf(),o.name));
- });
- }
- });
- });
- });
- })();
menu.jsp
- <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
- <%
- response.setCharacterEncoding("utf-8");
- String ids = request.getParameter("ids");
- if("beijing".equals(ids)){
- response.getWriter().write("[{name:'海淀',value:'01'},{name:'東城',value:'02'},{name:'順義',value:'03'}]");
- }else if("tianjing".equals(ids)){
- response.getWriter().write("[{name:'和平',value:'01'},{name:'河西',value:'02'},{name:'河東',value:'03'}]");
- }
- %>
11111111