在Sencha Touch提交表格

时间:2011-06-16 23:15:01

标签: javascript sencha-touch extjs

我创建了一个表单,并尝试将其内容发送到服务器。我使用sensa.com的表单示例作为模板。表单向我的服务器发送一条消息,但只有我的禁用缓存值而不是任何表单值,例如[url]/register?_dc=1829384859324。我还修改了示例以使用我的服务器URL,并且我的服务器从示例中仅使用_dc = ...接收了相同类型的请求。

我是否有一些明确的方法列出我想要发送到服务器的字段?

我的表单代码如下所示。当我调用submit时,我使用form.submit({method:'get'});

var formBase = {
        scroll: 'vertical',
        url   : 'MYURL/register',
        standardSubmit : false,
        items: [{
            xtype: 'fieldset',
            title: 'Personal Info',
            instructions: 'Please enter the information above.',
            defaults: {required: true,labelAlign: 'left',labelWidth: '40%'},
            items: [
            { xtype: 'textfield',name : 'first',label: 'First Name',useClearIcon: true,autoCapitalize : false
            }, { xtype: 'textfield',name : 'last',label: 'Last Name',useClearIcon: true,autoCapitalize : false
            }, { xtype: 'passwordfield',name : 'password',label: 'Password',useClearIcon: false
            }, {xtype: 'textfield',name : 'phone',label: 'Phone Number',
            }, {xtype: 'emailfield', name : 'email',label: 'Email',placeHolder: 'you@email.com',useClearIcon: true
            }]
        }],
    listeners : {
        submit : function(form, result){
                console.log('success',Ext.toArray(arguments));
        },
        exception : function(form, result){
                console.log('failure', Ext.toArray(arguments));
        }
}

3 个答案:

答案 0 :(得分:4)

我刚刚开始使用Sencha Touch,但我发布的表单有点不同。我已经创建了一个提交按钮,并给该按钮一个处理程序。执行的代码如下:

    this.loginView.submit({
        method: 'POST',
        waitTitle: 'Connecting',
        waitMsg: 'Sending data...',
        success: function(form, result) {
            Ext.Msg.alert('Login succeeded!', result.response.reason);
        },
        failure: function(form, result){
            Ext.Msg.alert('Login Failed!', result.response.reason);
        }
    });

其中this.loginView指的是Ext.form.FormPanel对象(我正在分离控制器代码和视图代码,我强烈推荐!)。您可以尝试的另一种方法是创建自己的AJAX请求(使用Ext.Ajax.request)并使用FormPanel对象中的getValues();方法检索表单参数。

我希望它有所帮助!

答案 1 :(得分:3)

您必须将表单属性 standardSubmit 设置为 true

答案 2 :(得分:0)

这篇文章相当陈旧,但可能还有其他人在表单提交方面遇到类似问题。

如果您是Sencha的新手,并且您的表单中没有提交任何内容,那么您可能会遵循本教程Building your first app

有问题。表单项必须具有示例中缺少的名称。

项目应如下所示:

    items: [
    {
        xtype: 'textfield',                             
        name: 'name',
        label: 'Name'
    },
    {
        xtype: 'emailfield',
        name: 'email',
        label: 'Email'
    },
    {
        xtype: 'textareafield',
        name: 'message',
        label: 'Message'
    }
]