【问题标题】:Extjs how submit form without ajax?Extjs如何在没有ajax的情况下提交表单?
【发布时间】:2012-06-05 08:27:02
【问题描述】:

美好的一天! 我尝试在没有 ajax 的情况下提交 extjs 表单并在下一页显示结果。这是我的代码:

Ext.define('test.from', {
    extend: 'Ext.form.Panel',
    alias: 'widget.test.form',
    initComponent: function () {

        var me = this;

        Ext.apply(this, {
            frame: true,
            bodyPadding: 7,
            border: 0,
            items: [{
                xtype: 'textfield',
                fieldLabel: 'First Name',
                name: 'contact_attr'
            }, {
                xtype: 'textfield',
                fieldLabel: 'Last Name',
                name: 'contact_attr'
            }],
            buttons: [{
                text: 'Send',
                handler: function () {
                    me.getForm().submit({
                        url: '/salary/public/auth/',
                        standardSubmit: true,
                        method: 'POST'
                    });
                }
            }]
        });

但不会发生重定向到其他页面,我收到错误:You're trying to decode an invalid JSON String。有谁能够帮助我?谢谢!

【问题讨论】:

  • 可能会发布无效的 json 以及生成它的代码

标签: javascript ajax extjs extjs4 form-submit


【解决方案1】:

好的,所以你有 2 个错误。

  1. 为什么不重定向(标准提交),以及
  2. 为什么会出现“错误解码”

我猜你正在使用 extjs4:

1 .来自文档 api。它说submit() 方法是Shortcut to do a submit action。参数为The options to pass to the action (see doAction for details)。因此,将standardSubmit 置于submit 方法不是正确的方法。没有标准提交选项。 more info。 myanswer,您有 2 种替代方式。
首先,使用初始化:

Ext.apply(this,{
    standardSubmit:true,  // not working...
    frame: true,
    bodyPadding: 7,
    .......

编辑:

.......
me.getForm().standardSubmit=true; //just like OP comment
me.getForm().submit({
   url: '/salary/public/auth/',
   standardSubmit: true,
   method: 'POST'
});
.......

第二,使用doAction:

...
me.getForm().doAction('standardsubmit',{
   url: '/salary/public/auth/',
   standardSubmit: true,
   method: 'POST'
});
...

2 。错误解码,我不知道你的 salary/public/auth 是什么样的......
尝试我的第一个解决方案,如果存在错误,则表示错误在其他地方...

【讨论】:

  • 您好!谢谢你的答案!您的第一个解决方案不起作用,但第二个解决方案效果很好。昨天我也找到了决定:var form = me.getForm(); form.url = '/salary/public/auth'; form.standardSubmit = true; form.method = 'POST'; form.submit();谢谢你的帮助!
  • 使用standardSubmit作为表单面板的配置,不要将它应用到基本表单或动作中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2013-11-29
  • 2016-08-29
  • 1970-01-01
  • 2011-12-04
相关资源
最近更新 更多