extjs中form表单提交注意点

extjs中form表单提交注意点最近在项目中使用了extjs,在使用过程中发现form的submit提交有些需要注意的地方。注意:这只是指HTTP请求成功,但是响应的结果仍然可

欢迎大家来到IT世界,在知识的湖畔探索吧!

最近在项目中使用了extjs,在使用过程中发现form的submit提交有些需要注意的地方。

语法

参数:
    actionName : String/Object 
    预定义的操作类型名称, 或者需要执行的Ext.form.Action 的实例。 
    options : Object 
    (可选) 传递给Ext.form.Action 的配置项。 submit和load操作支持以下列出的所有配置选项,除非有特殊说明(定制的操作也可以接收其他的配置选项): 
        url : String 
        操作的url (默认为表单的url。)

        method : String 
        表单的提交方式(默认为表单的提交方式,如果未指定则为POST)

        params : String/Object 
        The params to pass (默认值为表单的 baseParams,如果未定义则为none。)

        headers : Object 
        此操作的请求头部信息 (默认值为表单的默认头部信息)(译者注:指HTTP协议头信息。)

        success : Function 
        在成功收到响应之后回调的方法。注意:这只是指HTTP请求成功(事务被正确地发送和接收),但是响应的结果仍然可以包含错误数据。方法将会被传递以下参数:

        form : Ext.form.BasicForm 
        请求此操作的表单
        action : Ext.form.Action 
        Action类. 可以检查此对象的 result 属性,以执行特定的处理。 

        failure : Function 
        当尝试操作失败时回调的方法。注意:这只是HTTP操作失败,意味着服务器返回了HTTP错误状态码。方法将会被传递如下参数:

        form : Ext.form.BasicForm 
        请求此操作的表单
        action : Ext.form.Action 
        Action类. 如果发生了一个Ajax错误,错误类型在 failureType 参数中。可以检查此对象的 result 属性,以执行特定的处理。 

        scope : Object 
        调用回调函数的作用域 (也就是回调函数的this引用)。

        clientValidation : Boolean 
        只对Submit操作可用。指定是否在最终提交之前调用 isValid 方法来校验表单。设置为false可阻止此操作。 如果不指定,提交之前将进行校验操作。 

返回值:
    BasicForm 
    this

欢迎大家来到IT世界,在知识的湖畔探索吧!

额外的参数可以通过params传递,也可以通过url追加的方式传递

问题

以下是代码

欢迎大家来到IT世界,在知识的湖畔探索吧!formParan.getForm().submit({
    url : 'schudule/cash',
    method:'post',
    failure: function(){
        Ext.Msg.alert("提示","操作失败");
        messagestore.reload();
    },
    success : function(form, action) {
        Ext.Msg.alert("提示","操作成功");
        win.hide();
        formParan.getForm().reset();
        messagestore.reload();
    }
});

后台代码:

res.setHeader('Content-Type', 'application/json;charset=utf-8');

if(bOperate)
{
    var result = {'operate':'success', message':'success'}
    res.json(result);
}
else
{
    var result = {'operate':'failure', 'message':'认证的key错误,请和客服确认key'}
    res.json(result);
}

在测试过程中,后台返回成功的时候,前台一直走不到success中去。debug下看到http的状态码是200,按往常ajax的使用习惯来说应该走到success中去。
但是死活不行。后来才发现,运来extjs中form的submit调用需要后台给前端返回一个success的操作码,通过该操作码是true还是false来决定执行success还是failure代码段。

解决方案

需要修改后台代码,增加success:true/false来给前端区分成功失败的标识。

res.setHeader('Content-Type', 'application/json;charset=utf-8');

if(bOperate)
{ 
    var result = {'success':true, message':'success'}
    res.json(result);
}
else
{
    var result = {'success':false, 'message':'认证的key错误,请和客服确认key'}
    res.json(result);
}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/37059.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信