Ext.Ajax.request和form.getForm().submit的区别
2015-06-30 11:19
591 查看
在实际开发工作中,发现后台总是无法获取到上传的File文件。后来反复比较代码才终于找到区别,原来将Ext.Ajax.request换成form.getForm().submit
就可以实现文件上传的功能了,百度后恍然,原因如下:
Request方法必须将要提交的参数手动组织好然后作为名为params的参数的值才能提交到服务器,而submit方法会将表单内所有input元素组织好提交。
下面总结一下百度时看到的一些差异点:
相同点:都属于Ajax提交方式! 不同点:Ext.Ajax.request是Ext.data.connection的一个实例 form.getForm().submit是BasicForm的一个实现方式
回调函数
关于回调函数,解释:
1:Request方法提交时,回调函数中会传入两个参数(response,option),前者是请求的响应对象,服务器对于请求的响应信息可以通过它的responseText属性得到(也就是response.reponseText就可以得到服务器返回的字符串),第二个参数是提交的参数对象,一般不需要用到,如果要读取返回的响应信息,要先用Ext.decode方法将其resonseText属性值转换成json对象才可以读取;如服务器端返回的是一个json格式的字符串:{success:true,msg:'sample'},则客户端要读取这个信息,可以这样:varreturnResult
= 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也会被执行;
就可以实现文件上传的功能了,百度后恍然,原因如下:
Request方法必须将要提交的参数手动组织好然后作为名为params的参数的值才能提交到服务器,而submit方法会将表单内所有input元素组织好提交。
下面总结一下百度时看到的一些差异点:
相同点:都属于Ajax提交方式! 不同点:Ext.Ajax.request是Ext.data.connection的一个实例 form.getForm().submit是BasicForm的一个实现方式
回调函数
关于回调函数,解释:
1:Request方法提交时,回调函数中会传入两个参数(response,option),前者是请求的响应对象,服务器对于请求的响应信息可以通过它的responseText属性得到(也就是response.reponseText就可以得到服务器返回的字符串),第二个参数是提交的参数对象,一般不需要用到,如果要读取返回的响应信息,要先用Ext.decode方法将其resonseText属性值转换成json对象才可以读取;如服务器端返回的是一个json格式的字符串:{success:true,msg:'sample'},则客户端要读取这个信息,可以这样:varreturnResult
= 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也会被执行;
相关文章推荐
- iOS-UI控件之UITableView(二)- 自定义不等高的cell
- C#获取CPUID(MD5输出),网卡ID,主DNS,备用DNS
- 数据库生成UUID
- kendo UI loading 操作方法:
- ORA-19573: cannot obtain exclusive enqueue for datafile 5
- ArduinoYun教程之Arduino编程环境搭建
- distinguish and differentiate
- UISearchDisplayCotroller
- iOS6新特征:UICollectionView介绍
- 安装及汉化并使用Crowd2.7集成Confluence5.3与JIRA6.1,实现单点登录
- 第16周周四:GUI编程及文件对话框的使用
- druid简单教程
- request如何获取请求路径方法
- 第14周实验作业:GUI编程初步
- easyui
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- 【最大团】【HDU1530】【Maximum Clique】
- 【最大团】【HDU1530】【Maximum Clique】
- Material UI:非常强大的CSS框架
- EasyUIControl(一个可以简化ui界面的组件库