Extjs如何在没有ajax的情况下提交表单?

ved*_*med 3 javascript ajax extjs form-submit extjs4

美好的一天!我尝试在没有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'
                    });
                }
            }]
        });
Run Code Online (Sandbox Code Playgroud)

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

Egy*_*din 6

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

  1. 为什么不重定向(standarssubmit),和
  2. 为什么你有"错误解码"

我猜你正在使用extjs4:

1.来自docs api.它说submit()方法是Shortcut to do a submit action.而且参数是The options to pass to the action (see doAction for details).因此,把standardSubmitsubmit方法是不正确的方法.没有standardSubmit选项.更多信息.myanswer,你有2种替代方式.
首先,使用init:

Ext.apply(this,{
    standardSubmit:true,  // not working...
    frame: true,
    bodyPadding: 7,
    .......
Run Code Online (Sandbox Code Playgroud)

编辑:

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

第二,使用doAction:

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

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