ExtJS中的几种数据提交方式:

ExtJS中的几种数据提交方式:

1.表单Ajax提交(常用)

表单Ajax提交是我目前用的最多的一种,直接使用form.submit(),它会把form面板上的所有控件的值全部传递后台。Ajax的特点之一就是不刷新页面,提高用户体验。 后台必须返回JSON格式,success返回true则执行success:function(form, action)里面的代码,返回false则执行failure:function(form, action)中的代码。


  1. var panel222=new Ext.form.FormPanel({
  2. ……//form属性或配置项
  3. buttons:[{
  4.         text:'保存',
  5.         handler:function (){
  6.                    var aa=stag.getForm();//获取面板
  7.                    if(aa.isValid()){//通过验证
  8.                        aa.submit({//提交
  9.                                url : 'Form/stagingDateAdd.ashx',
  10.                                method : 'POST',
  11.                                waitTitle : "提示",//等待的标题
  12.                                waitMsg : '正在提交数据...',//等待的信息
  13.                                success : function(panel,action){
  14.                                    Ext.Msg.alert('信息','信息提交成功!');
  15.                                },
  16.                                failure : function(form,action){
  17.                                    Ext.Msg.alert('信息','信息提交失败!');
  18.                                }
  19.                        });
  20.                    }
  21.      }
  22. }]
  23. });                                                              


复制代码


2. 普通Ajax提交
这种提交方式可以设置传递到后台的参数,如果不想把面板上的控件全部传递到后台,就可以用这种提交方式。 需要注意的是,不管后台返回的信息是成功或失败都要执行success:function…,所以要在success方法里面判断一下返回的字符串,如果返回success:true,说明操作成功,返回success:false,说明操作失败。Failure方法是访问不到后台时执行的方法。


  1. var formBasisContent=new Ext.form.FormPanel({
  2. ……//form属性或配置项
  3. buttons:[{
  4.         text:"提交",
  5.         handler:function(){
  6.             varbasicForm=formBasisContent.getForm();
  7.               if(basicForm.isValid()){
  8.                 Ext.Ajax.request({
  9.                       method:'POST',
  10.                         [url='Form/BasisContentAdd.ashx]url:'Form/BasisContentAdd.ashx'[/url],
  11.                         params:{ ID:ID },//想要传递到后台的参数
  12.                         success:function(response,action){
  13.                              var resp=Ext.util.JSON.decode(response.responseText);//获取从后台传递回来的字符串
  14.                              if(resp .success==true )
  15.                              {//提交成功,成功访问后台
  16.                                  Ext.Msg.alert("提示","提交成功!");
  17.                               }
  18.                               else
  19.                                  Ext.Msg.alert('错误',resp.errors.info);
  20.                         },
  21.                     failure:function(response,action){ //无法访问后台}
  22. }]
  23. });


复制代码


以上返回函数也可以这样写:


  1. //指定Ajax请求的回调函数,该函数不管是调用成功或失败,都会执行。
  2.      callback: function(options, success, response) {
  3.         if(success){
  4.                                          MsgInfo(response.responseText);
  5.                              }
  6.      }


复制代码



3.通过Ext.data.Connection提交数据
这种提交方式在grid中删除行时用到过。此提交方式没有限制返回的数据格式,不过我的项目后台返回的一直都是JSON格式数据,其他格式没有试过。

  1. var conn=newExt.data.Connection();
  2. conn.request({
  3.    [url='Form/BasisContentDelete.ashx]url:'Form/BasisContentDelete.ashx'[/url],
  4.    params:{ deleteID_basisContent:basisContentID },//要传递的参数
  5.    method:'POST',
  6.    scope:this,
  7.    callback:function(options,success,response){//回调函数
  8.         if(success )
  9.          {//操作成功}
  10.          else//操作失败
  11.              Ext.Msg.alert("失败","删除失败,请重试!");
  12.    }
  13. })


复制代码


以上3种提交方式是我目前做项目时用到过的。下面是查资料时从网上看到的ExtJS提交方式。

4.普通方式提交
适合一次操作页面,即 提交后跳转到另外一个页面

  1. var form1= new Ext.FormPanel({
  2.       ……//form属性或配置项
  3. buttons:[{
  4.         text:"提交",
  5.         handler:function(){
  6.              if(form1.form.isValid()){                           
  7. //只用指定TextField的id或者name属性,服务器端Form中就能取到表单的数据
  8.   //如果同时指定了id和name,那么name属性将作为服务器端Form取表单数据的Key
  9.                      var form = form1.getForm().getEl().dom;
  10.                      form.action = 'submit.aspx?method=Submit1&param1=abc';
  11. //指定为GET方式时,url中指定的参数将失效,表单项转换成url中的key=value传递给服务端
  12. //例如这里指定为GET的话,url为:submit.aspx?param2=你输入的值
  13.                       form.method = 'GET';//GET、POST
  14.                     form.submit();
  15.                  }
  16.          }
  17. }]
  18. });


复制代码



5.关于hmtl表单和extJS表单的Ajax提交方式之一
这种方式将为ext的ajax指定一个html表单,使用这种方式,不需要将待传递的参数进行封装(没有params属性,表单全部传递到后台)

  1. function saveUser_ajaxSubmit2(){
  2.       Ext.Ajax.request({
  3.       url :'user_save.action',
  4.        method : 'post',
  5.        form : 'userForm',  // 指定表单
  6.       success : function(response, options){//操作成功
  7.            var o =Ext.util.JSON.decode(response.responseText);//获取后台返回JSON格式数据
  8. alert(o.msg);
  9.        },
  10. failure : function() {//操作失败 }
  11. });
  12. }


复制代码



6.关于hmtl表单和extJS表单的Ajax提交方式之二

这种方式将html的表单转化为ext的表单进行异步提交,使用这种方式,需要定义好html的表单(同样不能指定传递参数)

  1. function saveUser_ajaxSubmit4() {
  2.    newExt.form.BasicForm('userForm').submit( {
  3.        waitTitle : '请稍后...',
  4.        waitMsg : '正在保存用户信息,请稍后...',
  5.   url :'user_save.action',
  6. method :'post',
  7. success: function(form, action){
  8. alert(action.result.msg);
  9. },      
  10. failure : function(form, action){
  11. alert(action.result.msg);
  12. }
  13. });
  14. }


复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值