Ext.Ajax.request和formPanel.getForm().submit()两种提交方法的异同:

1、 相同点:

a) 都是使用异步提交的方式;

b) 默认都是使用POST方式来提交数据;

2、 不同点:

a) Request方法不可以使用waitMsg属性来设置在等待响应过程中显示的信息,而submit方法提交时这个设置是可用的(可以看到效果,而前面说的不可用是指设置了看不到效果);

b) Request方法必须将要提交的参数手动组织好然后作为名为params的参数的值才能提交到服务器,而submit方法会将表单内所有input元素组织好提交;

c)  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属性,如果不经判断就访问,有可能会引发异常;

d) 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请求的情况下返回的结果是以字符串的形式获取的,也就是说ext并未到其进行解析,所以它也识别不了里面返回的结果是成功还是失败,只是把一个字符串带回来了,而submit方法提交时,返回的action.result对象已经将响应信息解析了,它能读取其中的success属性的值,所以能够根据不同的success属性来执行相应的回调方法)

原文地址:https://www.cnblogs.com/wrnsweet/p/8476272.html

时间: 2024-08-24 01:27:59

Ext.Ajax.request和formPanel.getForm().submit()两种提交方法的异同:的相关文章

ExtJS中Ext.Ajax.request与form1.getForm().submit的基本区别

相同点:都属于Ajax提交方式! 不同点:Ext.Ajax.request是Ext.data.connection的一个实例 form1.getForm().submit是BasicForm的一个实现方式 使用上的区别: 1.form1.getForm().submit常用在表单提交的时候,就是说要提交页面数据,比如新增和修改数据页面 2.Ext.Ajax.request常用在根据参数提交的时候,比如删除,我们把页面选中的ID进行遍历,封装在一个Array中,作为一个参数做Ajax的提交 例子:

Ajax中的get和post两种请求方式的异同

Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.   1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程.   2. 对于get方式,服务器端用Request.QueryS

转:Ajax中的get和post两种请求方式的异同

1. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址.用户看不到这个过程. 2. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据.两种方式的参数都可以用Request来获得. 3.get传送的数据量

[转] form.getForm().submit的用法及Ext.Ajax.request的小小区别

原文地址:http://blog.csdn.net/hongleidy5000/article/details/7329325 [javascript] view plain copy if (!formDetail.getForm().isValid()) { msg("警告", "请填写必要信息项!"); return; } else { try { formDetail.getForm().submit({ url: '../ashx/userLogin.as

Extjs4.0以上版本 Ext.Ajax.request请求的返回问题

Ext.Ajax.request({ url: posturl, method: 'POST', params: { ClassName: 'XXXX', FuncName: 'XXXX', param: param }, success: function (response) { var text = response.responseText; if (text == "false") { Ext.MessageBox.hide(); Ext.MessageBox.alert(&

Ext.Ajax.request同步请求

导读: ajax分为2种,一种是同步,一种是异步同步:代码执行完了之后才执行后面的代码 异步:代码刚执行,后面的代码就马上接着执行了,不管前面的代码是否执行完异步的情况下,要获得返回信息,就需要在异步执行完之后写代码,也就是在success里面写代码,或者success里面调用其他的函数. 在Ext3.0以上的版本里面 ,Ext.Ajax.request是异步的,到Ext 4.0以后才支持同步请求的属性(没试过) -----------------------------------------

ExtJS Ext.Ajax.request最好设为同步

ExtJS 中Ext.Ajax.request最好设为同步,即async: false,因为如果Ajax后面需要用到Ajax更新的数据的话,设置同步,后面才能用到最新的数据. function GetPatientOrder() { Ext.Ajax.request({ url: '/CommonAshx/Order.ashx', method: 'get', async: false, params: { gurd: "GetOrder", patientCardNo: Ext.ge

extjs Ext.Ajax.request 同步和异步

ext3.x 不支持ajax的同步请求,ext4就开始支持. 1 Ext.Ajax.request({ 2 url : '', 3 sync:true, 4 params : { 5 name : text.getValue() 6 }, 7 success : function(response, options) { 8 var responseArray = Ext.util.JSON.decode(response.responseText); 9 resultValue=respons

ExtJs 4中 Ext.Ajax.request提交实现waitMsg等待提示效果

//submitForm为form表单 var myMask = new Ext.LoadMask(Ext.getBody(),{msg:"请稍等,正在导入..."}); myMask.show(); Ext.Ajax.request({ url:"uploadAction", method:"POST", params:{ id:id }, success:function(){ if (myMask != undefined){ myMask