EXTJS 中Ajax 應用示例

簡單的Ext.Ajax. request示例 var requestConfig = { url :'loginServer.jsp',//請求的服務器地址 params : {userName : 'tom',password : '123'},//請求參數 customer : '自定義屬性',//附加屬性 callback : function(options,success,response){//回調函數 var msg = ["請求是否成功:" ,success,"\n", "服務器返回值:",response.responseText, "本地自定義屬性:",options.customer]; alert(msg.join('')); } } Ext.Ajax.request(requestConfig);//發送請求 Ext.Ajax表單提交示例 var requestConfig = { url :'loginServer.jsp',//請求的服務器地址 form : 'loginForm',//指定要提交的表單id callback : function(options,success,response){//回調函數 var msg = ["請求是否成功:" ,success,"\n",   "服務器返回值:",response.responseText]; alert(msg.join('')); } } Ext.Ajax.request(requestConfig);//發送請求 Ext.Ajax. request提交xml數據 function login(){ var requestConfig = { url :'loginServerXml.jsp',//請求的服務器地址 xmlData : getXml(),//發送xml文檔對象 callback : function(options,success,response){//回調函數 var msg = ["請求是否成功:" ,success,"\n",   "服務器返回值:",response.responseText]; alert(msg.join('')); } } Ext.Ajax.request(requestConfig);//發送請求 } //生成xml文檔對象 function getXml(){ var name = document.forms['loginForm'].userName.value; var pwd = document.forms['loginForm'].password.value; var dom = new ActiveXObject("msxml2.DOMDocument"); var header = dom.createProcessingInstruction("xml", "version='1.0'"); dom.appendChild(header); var root = dom.createElement("loginInfo"); var userName = dom.createElement("userName"); userName.text = name; var password = dom.createElement("password"); password.text = pwd; root.appendChild(userName); root.appendChild(password); dom.appendChild(root); return dom; } xt.Ajax. request提交json數據 function login(){ var requestConfig = { url :'loginServerJson.jsp',//請求的服務器地址 jsonData : getJson(),//發送json對象 callback : function(options,success,response){//回調函數 var msg = ["請求是否成功:" ,success,"\n",   "服務器返回值:",response.responseText]; alert(msg.join('')); } } Ext.Ajax.request(requestConfig);//發送請求 } //生成json對象 function getJson(){ var name = document.forms['loginForm'].userName.value; var pwd = document.forms['loginForm'].password.value; var jsonObj = { userName : name, password : pwd } return jsonObj; } Ext.Updater.update div內容更新器示例 var updater = Ext.get('content-div').getUpdater();//獲得元素的更新器 var btns = Ext.select('input');//選擇頁面中的全部input組件 btns.addListener('click',function(e,b){//成批綁定click事件 update('9-5-'+b.value+'.html');//調用更新函數 }); //定義更新函數 function update(url){ updater.update({//調用更新器的update方法,更新頁面元素 url : url }); } 定義渲染器更新頁面元素示例 Ext.Updater.defaults.showLoadIndicator = false;//不顯示更新指示器 var updater = Ext.get('content-div').getUpdater();//獲得元素的更新器 var cusRender = function(){//自定義渲染器 this.render = function(el, response, updateManager, callback){ var time = el.query('input')[0]; time.value = response.responseText; } } updater.setRenderer(new cusRender());//指定自定義渲染器 var btns = Ext.get('updateBtn');//選擇頁面中id爲updateBtn的元素 btns.on('click',function(){//綁定click事件 update();//調用更新函數 }); //定義更新函數 function update(){ updater.update({//調用更新器的update方法,更新頁面元素 url : 'timeServer.jsp' }); } 自動定時更新頁面元素示例 Ext.Updater.defaults.showLoadIndicator = false;//不顯示更新指示器 var updater = Ext.get('serverTime').getUpdater();//獲得元素的更新 Ext.get('startAutoBtn').on('click',startAutoUpdate); Ext.get('stopAutoBtn').on('click',stopAutoUpdate); function startAutoUpdate(){ //開始定時自動刷新 updater.startAutoRefresh(1,'timeServer.jsp'); } function stopAutoUpdate(){ //中止定時自動刷新 updater.stopAutoRefresh(); } 提交表單更新頁面元素示例   <mce:script type="text/javascript"><!-- Ext.onReady(function(){ Ext.Updater.defaults.indicatorText  =  '<div class="loading-indicator">登錄中....</div>';//設置更新指示器文字 var updater = Ext.get('loginMsg').getUpdater();//獲得元素的更新 Ext.get('loginBtn').on('click',login); function login(){ //提交表單,在回調函數中更新頁面元素 updater.formUpdate('loginForm','loginServer.jsp'); } })    // --></mce:script>  </HEAD>  <BODY style="margin=10 10 10 10;" mce_style="margin=10 10 10 10;"> <form id='loginForm'> 用戶名:<input name = 'userName' type='text'> 密  碼:<input name = 'password' type='password'> <input type='button' value='登錄' id='loginBtn'> </form> 狀  態:<span id='loginMsg'></span>  </BODY> </HTML> 多級聯動菜單   <mce:script type="text/javascript"><!-- Ext.onReady(function(){ //將下拉框id順序存入數組中,以便經過遍歷數組級聯更新 var lists = ['s1','s2','s3'] //爲下拉框綁定change事件的處理函數 Ext.select('select').on('change',function(e,select){ //取得下拉框中選中的值 var value = select.options[select.selectedIndex].value; //取得下拉框id var id = select.id; //經過循環的到下拉框id在lists數組中的索引位置 for(var i = 0 ; i < lists.length ; i++){ if(lists[i] == id){ var index = i; } } //取得相鄰下拉框id在lists數組中的索引 var nextIndex = index + 1; if(nextIndex >= lists.length){ nextIndex = lists.length - 1; } //移除相鄰下拉框及後續下拉框的值 remove(nextIndex); //爲相鄰下拉框及後續下拉框加載新值 getList(nextIndex,value); }); //經過Ajax方式爲下拉框加載數據, function getList(index,value) { Ext.Ajax.request({ url : 'bookServer.jsp',//請求的服務器地址 params : { target : lists[index], value : value }, callback : function(options,success,response){ if(success){ //取得要更新的下拉框 var select = Ext.get(lists[index]); //執行返回字符串,獲得數組對象 var array = eval(response.responseText); //記錄數組中的第一各類,該值將做爲下級下拉框的默認取值條件 var firstValue; for(var i=0 ; i < array.length ; i++){ var o = array[i]; if(i == 0){ firstValue = o.value; } //向下拉框中追加條目 select.appendChild(createOption(o.value,o.name)); } //若是不是最後一個下拉框則繼續加載相鄰下拉框的數據 if(index < lists.length){ getList(index + 1,firstValue); } } } }) } //根據傳入的value和text建立選項 function createOption(value, text) { var opt = document.createElement("option");  opt.setAttribute("value", value); opt.appendChild(document.createTextNode(text)); return opt; } //級聯刪除下拉框及子下拉框的值 function remove(index){ for(var i = index ; i < lists.length ; i++){ var select = Ext.get(lists[i]).dom; while(select.length>0){  select.options.remove(select.length-1) } } } //默認加載值爲1的教學類列表 getList(1,"1"); //默認列表s1的教學類被選中 Ext.get('s1').dom.selectedIndex = 0; })    // --></mce:script>       自定義渲染器+解碼json對象+ json式生成表格(綜合示例:天氣預報)     <mce:script type="text/javascript"><!-- Ext.onReady(function(){ //設置更新指示器文字 Ext.Updater.defaults.indicatorText  =  '<div class="loading-indicator">讀取天氣信息....</div>'; //獲得元素的更新器 var updater = Ext.get('weather').getUpdater(); //自定義渲染器 var weatherRender = function(){ this.render = function(el, response, updateManager, callback){ //解碼響應字符串,獲得對應的json對象 var weaObj = Ext.util.JSON.decode(response.responseText); //利用工具類Ext.DomHelper的overwrite方法生成表格並以覆蓋方式更新元素el Ext.DomHelper.overwrite(el,{ tag:'table',children:[ {tag:'tr',children:[ {tag:'td',html:'日期:'}, {tag:'td',html:weaObj.date} ]}, {tag:'tr',children:[ {tag:'td',html:'風速:'}, {tag:'td',html:weaObj.windSpeed} ]}, {tag:'tr',children:[ {tag:'td',html:'溼度:'}, {tag:'td',html:weaObj.humidity} ]}, {tag:'tr',children:[ {tag:'td',html:'最高氣溫:'}, {tag:'td',html:weaObj.maxTemp} ]}, {tag:'tr',children:[ {tag:'td',html:'最底氣溫:'}, {tag:'td',html:weaObj.minTemp} ]} ] }); } } //指定自定義渲染器 updater.setRenderer(new weatherRender()); //選擇頁面中id爲select的元素 var select = Ext.get('city'); //綁定change事件 select.on('change',function(e,sel){ var cityCode = sel.options[sel.selectedIndex].value; var cityName = sel.options[sel.selectedIndex].text; //調用更新函數,並將選中城市的編碼出入更新函數中 updateWeather(cityCode,cityName); }); //定義更新函數 function updateWeather(cityCode,cityName){ updater.update({//調用更新器的update方法,更新頁面元素 url : 'weatherServer.jsp', params : {cityCode:cityCode}, callback : function(el,success,response,options){ //讀取天氣信息失敗,則更新頁面元素已顯示錯誤提示 if(success == true){ Ext.get('cityName').update(cityName); }else{ el.update("讀取 "+cityName+" 天氣信息失敗!"); } } }); } //默認讀取北京的天氣狀況 updateWeather('CHXX0008','北京'); })    // --></mce:script>    Ext.form.HtmlEditor + Updater更新器 + 延時Ajax任務(綜合示例:自動保存編輯器)     <mce:script type="text/javascript"><!-- Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif'; Ext.QuickTips.init();//使用HtmlEditor以前必須初始化提示 var note = new Ext.Panel({ title:'網絡記事本', renderTo : 'webNote', frame : true, layout:'fit', tbar : [ { text : '保存', //點擊保存按鈕即時執行保存操做不進行延時 handler : saveNode }, '-', '最近保存時間:', Ext.get('saveTime').dom, '-', Ext.get('saveStatus').dom ], items : [ new Ext.form.HtmlEditor({ id : 'content', height : 150, width : 500, fontFamilies : ['宋體','隸書','黑體'],//字體列表 listeners : { //sync事件將在文本發生變化時被觸發 sync  : editorChange } }) ] }); //取得HtmlEditor組件的引用 var editor = note.findById('content'); //設置更新指示器文字 Ext.Updater.defaults.indicatorText  =  '<div class="loading-indicator">保存....</div>'; //取得頁面中id爲saveTime元素的更新器 var timeUpdater = Ext.get('saveTime').getUpdater(); //取得頁面中id爲saveStatus元素的引用 var saveStatus = Ext.get('saveStatus'); //定義HtmlEditor輸入內容發生變化時的處理函數 function editorChange() { //文本變化後延時3000毫秒執行保存操做 task.delay(3000); } //將保存操做轉換爲一個延時任務 var task = new Ext.util.DelayedTask(saveNode); //定義保存文本內容的函數 function saveNode() { timeUpdater.update({ url : 'noteServer.jsp', method : 'POST', params : { //將文本內容做爲參數傳遞到後臺服務器 content : editor.getValue() }, callback : function(el,success,response,options){ if(success == true){ saveStatus.update("<font color='green'>保存成功</font>"); }else{ saveStatus.update("<font color='red'>保存失敗</font>"); } } }) } })    // --></mce:script>  </HEAD>  <BODY style="margin=10 10 10 10;" mce_style="margin=10 10 10 10;"> <div id='webNote' style="width:522"/> <div id='saveTime'/> <div id='saveStatus'/>  </BODY> </HTML>

相關文章
相關標籤/搜索