如何在不使用ajax的情况下提交Extjs表单?

3

你好! 我正在尝试提交ExtJS表单,但不使用ajax,并在下一页上显示结果。这是我的代码:

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以及生成它的代码。 - Gavriel
1个回答

6

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

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

我猜你在使用extjs4:

1. 从文档api中可以看到,submit()方法是一个快捷提交操作。参数是要传递给操作的选项(有关详细信息,请参见doAction)。因此,将standardSubmit放入submit方法中不是正确的方法。没有standardSubmit选项。更多信息。我的回答是,你有两种替代方法。
首先,使用init:

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(); 谢谢您的帮助! - vedmed
使用 standardSubmit 作为表单面板的配置,不要将其应用于基本表单或操作。 - Mitchell Simoens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接