08Extjs笔记 关于ajax
1.讲解了模型如何利用ajax的原理方法。
2.文档
3.ajax: 代码的执行的时候 代码不会被打断。
4.下面这个就是说,要是跳转不成功就直接进入错误的处理的函数。
5.将返回的字符串进行转换。 (function(){ Ext.onReady(function(){ Ext.Ajax.request({ url : 'person.jsp',params:{id:'01'},method : 'POST',timeout :3000,success :function(response,options){ //注意将json的对象转换为属性的方法 alert(eval(response.responseText)[0].name); },failure :function(response,options){ alert(response.responseText+" "+options) } }); }) })() 后台的返回的方式 <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%> <% String id = request.getParameter("id"); if("01".equals(id)){ response.getWriter().write("[{id:'01',name:'uspcat.com','age':26,email:'yunfengcheng2008@126.com'}]"); } %> 6.接下来表单提交的方式。(没有action 没有提交,全是js的操作) (function(){ Ext.onReady(function(){ Ext.get('b').on("click",function(){ Ext.Ajax.request({ url : 'person.jsp',form:"myform",options){ alert(eval(response.responseText)[0].name); },options){ alert(response.responseText+" "+options) } }); }) }) })() 前台的页面中的form <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> 下面的这个属性是说明表单是否可以上传附件
Ext.ElementLoader例子的说明,页面从后台取回数据的操作 前台页面代码 <input type="text" name="time" id="time"> <input type="button" value="get time" id="b1"> 注意我们首先得到这个对象 Ext.ElementLoader才能使用这个里面的方法,思路就是首先获得自己本身的element然后利用element的公有的getloader方法获得loader这样就能进行数据的装载了。 看代码: Ext.onReady(function(){ Ext.get('b1').on("click",function(){ var time = Ext.get("time").getLoader(); time.load({ url:'/extjs/extjs!getTime.action',renderer:function(loader,response,request){ var time = response.responseText; Ext.getDom("time").value = time; } }); }) Ext.get('b2').on("click",function(){ var i = Ext.get('i').getLoader(); i.startAutoRefresh(1000,{ url:'/extjs/extjs!getI.action',request){ var i = response.responseText; Ext.getDom("i").value = i; } }); }) }) 代码说明:代码的render这个方法就相当于request请求结束后,将回调函数success的作用。 后台利用action获取时间的操作:
其中注意extjs 这两种操作的不同的地方
一个是获得dom元素,另一个是获得element的元素。后者是一个对象,不可以更改属性对前台造成影响的。而dom元素的属性是可以进行修改的。
8.load方式的讲解:可以说用另一种同样的方式也是可以的,用ajax进行请求然后将返回的数据进行赋值,这里是一种综合的方法。
9.下面方法是可以自动进行刷新页面的某一个dom
10.可以刷新页面的某一个元素。 前台的代码: <input type="text" name="i" id="i"> <input type="button" value="get i" id="b2">ext代码: Ext.onReady(function(){ Ext.get('b2').on("click",request){ var i = response.responseText; Ext.getDom("i").value = i; } }); }) }) 11.在数据传递的时候,将数据传递为什么类型。
json格式往后台发送数据( 页面自动进行传送)jsonDate.js (function(){ Ext.onReady(function(){ var data = "{id:'01',email:'yunfengcheng2008@126.com'}"; Ext.Ajax.request({ url : 'person.jsp',jsonData:data,options){ alert(response.responseText+" "+options) } }); }) })() 12.多级联动的思路:就是当一个文本框失去焦点的时候,就去后台取得数据,然后在下方显示。说实话,jquery做这个比较给力。 前台的代码 <select name="city" id="city"> <option value="beij" selected>北京市</option> <option value="tianj">天津市</option> </select> <select name="area" id="area"> <option value="def" selected>-----------</option> </select>
(function(){ function createChild(value,name){ var el = document.createElement("option"); el.setAttribute("value",value); el.appendChild(document.createTextNode(name)); return el; } var data = {}; Ext.onReady(function(){ //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:'/extjs/extjs!menu.action',params:{ids:ids},method:'post',timeout:4000,success:function(response,opts){ var obj = eval(response.responseText); //5.得到地区的哪个对象area DOM var oldObj = Ext.get("area").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)); }) //8.把从数据库拿到的数据进行前台页面缓存 } }); }); }); })() 前台传递的数据是变量和常量的不同
14.这一节最后一节讲解的就是关于缓存的技术,就是在加载的时候多一些判断,要是数据是空的就进行加载,要是数据是存在的就直接引用,变量是跨浏览器的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |