Ext.Ajax.request和form..submit两…


在实际开发工作中,后台总是无法获取File 文件。终于找到了愿意,原来将Ext.Ajax.request换成form..submit
就可以实现文件上传的功能,百度后恍然,原因如下:
          Request 方法必须将要提交的参数手动组织好然后作为名为 params 的参数的值才能提交到服务器,而 submit 方法会将表单内所有 input 元素组织好提交。
      
      针对两种提交方式,以下还有些区别,重点在回调函数(来自网络)
     下面是代码:  最明显就是success和failure时候function的参数

 

  1. function formSubmit(){  
  2.    if (form.getForm().isValid()) //验证表单填写的数据是否有效  
  3.     form.getForm().submit({     //调用basicForm的submit方法  
  4.      waitTitle '提示',//标题  
  5.      waitMsg '正在提交数据请稍后...',//提示信息  
  6.      url 'eidtBooktype.action'  //将要把表单发送到哪里  
  7.      method 'post'  //指定发送方式  
  8.      params 'booktype'//携带的参数  
  9.      success function(form, action){  //form指这个表单 action指返回内容  
  10.       var flag=action.result.msg;  
  11.       window.returnValue='SUCC' 
  12.       Ext.Msg.alert('提示',flag,function(){  
  13.        window.close();  
  14.       });  
  15.      },  
  16.      failure function(form,action)  
  17.       var flag=action.result.msg;  
  18.       Ext.Msg.alert('操作'flag);  
  19.       
  20.     });  
  21.     
  22.  

  1. "Ext.Ajax.request" name="code">Ext.Ajax.request({  
  2.          url 'deleteBooktypes.action' 
  3.         method 'post' 
  4.         params {delids:deleteids.toString()},  
  5.         success function(form,action)  
  6.          var respText Ext.util.JSON.decode(form.responseText); //把字符串变为json格式  
  7.          var msg=respText.msg; //获取里面的值的方法与上面稍有不同  
  8.          Ext.MessageBox.alert('提示',msg,function(){  
  9.           bookTypeStore.reload();  
  10.          });  
  11.         },  
  12.         failure function(response,options)  
  13.          var respText Ext.util.JSON.decode(response.responseText); //吧字符串变为json格式  
  14.          var msg=respText.msg;  
  15.          Ext.MessageBox.alert('提示',msg,function(){  
  16.           bookTypeStore.reload();  
  17.          });  
  18.          
  19.        });  
  20.    
  21. "font-family: Simsun; white-space: normal; font-size: medium;"

      

   

   解释:风马牛不相及

   1:Request方法提交时,回调函数中会传入两个参数(response,option),前者是请求的响应对象,服务器对于请求的响应信息可以通过它的responseText属性得到(也就是response.reponseText就可以得到服务器返回的字符串),第二个参数是提交的参数对象,一般不需要用到,如果要读取返回的响应信息,要先用Ext.decode方法将其resonseText属性值转换成json对象才可以读取;如服务器端返回的是一个json格式的字符串:{success:true,msg:'sample'},则客户端要读取这个信息,可以这样:var returnResult = Ext.decode(response.responseText); alert(returnResult.msg);submit的情况下回调函数参数是(form,action),如果想读取响应信息,只需要访问action对象的result属性就可以了,像上述同样的返回信息,读取的示例:alert(action.result.msg);不过有一点要注意的是,当网络数据传输失败或信息丢失的情况下,action中可能没能取到服务器返回的消息,也就是说,result不一定会存在msg属性,如果不经判断就访问,有可能会引发异常;

2: Request方法提交后,无论返回的json结果中success属性是否为true,回调函数都会到success:function()里面执行,所以在这种情况下,必须在success方法体里再到result.success进行判断以得到真正的执行结果,所以,只有在出现网络错误,连不到服务器或找到响应页面(404)时,failure回调方法才会被执行;而Submit方法在返回的结果中,如果success为true的,就会自动执行success:function,如果是false,则会执行failure:function了,所以没有必要再在里面判断success是true或false,另,跟request时一样,当出现网络错误或其它未知错误时,failure:function也会被执行;

 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值