简体   繁体   中英

Submitting form in Sencha Touch

I have created a form and am trying to send its contents to a server. I used the forms example from sensa.com as a template. The form sends a message to my server, but only with my the disable caching value and not any of the form values, for example [url]/register?_dc=1829384859324 . I also modified the example to use my server url and my server received the same type of request with only _dc=... from the example.

Is there some explicit way I have to list the fields I want sent to the server?

My form code is listed below. When I call submit, I use 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));
        }
}

I've just started using Sencha Touch myself, but I'm posting my form a bit different. I've created a submit button, and given that button a handler. The code that gets executed is the following:

    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);
        }
    });

In which this.loginView refers to an Ext.form.FormPanel object (I'm separating controller-code and view-code, which I highly recommend!). Another method you could try is create your own AJAX request (using Ext.Ajax.request ) and retrieve your form params using the getValues(); method from the FormPanel object.

I hope it helps!

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

This post is quite old, but there might be others having similar issues with form submitting.

If you are new to Sencha and you have a form which is submitting nothing, you probably followed this tutorial Building your first app

It has a problem. Form items MUST HAVE NAME which is missing in the example.

Items should look something like the following:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM