3

再会!我尝试在没有 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。有谁能够帮我?谢谢!

4

1 回答 1

6

好的,所以你有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不是正确的方法。没有标准提交选项。更多信息。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样子....
尝试我的第一个解决方案,如果存在错误,则意味着错误在其他地方...

于 2012-06-06T05:04:33.150 回答