ext 的 ajax 实例讲解

1. EXT提交服务器的三种方式
          1, EXT的form表单ajax提交(默认提交方式)

              相对单独的ajax提交来说优点在于能省略写参数数组

              将按钮添加单击事件,执行以下方法

                  
java 代码

function login(item) {
            
              if (validatorForm()) {
                  // 登录时将登录按钮设为disabled,防止重复提交
                  this.disabled = true;
   
                  // 第一个参数可以为submit和load
                  formPanl.form.doAction('submit', {
   
                      url : 'user.do?method=login',
   
                      method : 'post',
   
                      // 如果有表单以外的其它参数,可以加在这里。我这里暂时为空,也可以将下面这句省略
                          params : '',
   
                          // 第一个参数是传入该表单,第二个是Ext.form.Action对象用来取得服务器端传过来的json数据
                          success : function(form, action) {
   
                              Ext.Msg.alert('操作', action.result.data);
                              this.disabled = false;
   
                          },
                          failure : function(form, action) {
   
                              Ext.Msg.alert('警告', '用户名或密码错误!');
                              // 登录失败,将提交按钮重新设为可操作
                              this.disabled = false;
   
                          }
                      });
                  this.disabled = false;
              }
          }



          2.EXT表单的非ajax提交

           
           在表单需加入下列代码


代码



//实现非AJAX提交表单一定要加下面的两行! onSubmit : Ext.emptyFn, submit : function() {   
//再次设定action的地址   
this.getEl().dom.action ='user.do?method=login'; this.getEl().dom.method = 'post';   
//提交submit
   this.getEl().dom.submit();
},   

          3.EXT的ajax提交

               
代码



Ext.Ajax.request({
                                         //请求地址
                      url: 'login.do',
                      //提交参数组
                      params: {
                          LoginName:Ext.get('LoginName').dom.value,
                          LoginPassword:Ext.get('LoginPassword').dom.value
                      },
                      //成功时回调
                      success: function(response, options) {
                         //获取响应的json字符串
                        var responseArray = Ext.util.JSON.decode(response.responseText);                                               
                             if(responseArray.success==true){
                                 Ext.Msg.alert('恭喜','您已成功登录!');      
                             }
                             else{
                                 Ext.Msg.alert('失败','登录失败,请重新登录');      
                             }
                     }
             });

2. 利用viewport布局左边区域系统菜单跳转两种方式


        1,使用Ext.get('centerPanel').load(url:"aaa.jsp");url为必选参数还有其他可选参数     请参见api文档。缺点,加入的页面js无效
        2,使用iframe,具体
js 代码
Ext.get('centerPanel').dom.innerHTML='< i f r a m e src=aaa.jsp>< / i f r a m e >';
       优 点可以在载入的页面动态加载js脚本(推荐使用)
我也来说两句 查看全部回复

最新回复

  • 03time (2008-4-10 14:38:32)

    Ext.Ajax简单介绍
    关键字: Ext.Ajax简单介绍
    其实Ext.Ajax的使用并不难,只是当初我一直不清楚如何获取其返回值,搞得郁闷了一阵子,以下是一个比较简单的例子

    1Ext.Ajax.request({
    2                    url: 'Register.aspx',
    3                    params: {
    4                        oper: 'login',
    5                        LoginEmail:Ext.get('LoginEmail').dom.value,
    6                        LoginPwd:Ext.get('LoginPwd').dom.value
    7                    },
    8                    success: function(response, options) {
    9                      var responseArray = Ext.util.JSON.decode(response.responseText);                                             
    10                            if(responseArray.success=='true'){
    11                                Cookies.set('Allcard_userName', responseArray.user);
    12                                Ext.Msg.alert('信息','您已成功登录!',IsLogin);   
    13                            }
    14                            else{
    15                                Ext.Msg.alert('失败','登录失败,请确认您的帐号密码无误!');   
    16                            }
    17                    }
    18            });
    代码说明:
    2行:URL参数是要提交到的页面
    3行:params是一个需要提交的参数集,使用逗号分隔
    8行:当回调成功返回后要执行的函数
    9行:获取服务器端的回调参数值
    10行:对回调值进行判断处理

    这里需要说明一下的是如何获取回调参数值,Extjs里是通过JSON的数据格式来获取参数的,因此在服务器端处理完事情后,回调的参数应该这样写:(以下是ASP.NET里的写法)

    result = "{success:true,user:'winson'}";
    Response.Write(result);
    Response.End();
    将数据以键值对的形式返回,接收时就可使用第一段代码里第9行的方法来接收,由于使用的是JSON格式,因此服务器端就可以非常方便地同时返回多个参数值了。

    Ext.Ajax基本使用就是这样,其实也挺简单的,只是如果要在提交时增加Loading效果,那就比较麻烦了,呵,这里我也没深入研究

    接下来还有比较复杂的表单应用!