最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Submitting form in Sencha Touch - Stack Overflow

programmeradmin2浏览0评论

I have created a form and am trying to send its contents to a server. I used the forms example from sensa 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: '[email protected]',useClearIcon: true
            }]
        }],
    listeners : {
        submit : function(form, result){
                console.log('success',Ext.toArray(arguments));
        },
        exception : function(form, result){
                console.log('failure', Ext.toArray(arguments));
        }
}

I have created a form and am trying to send its contents to a server. I used the forms example from sensa. 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: '[email protected]',useClearIcon: true
            }]
        }],
    listeners : {
        submit : function(form, result){
                console.log('success',Ext.toArray(arguments));
        },
        exception : function(form, result){
                console.log('failure', Ext.toArray(arguments));
        }
}
Share Improve this question edited Jun 17, 2011 at 15:46 asked Jun 16, 2011 at 23:15 user791641user791641
Add a ment  | 

3 Answers 3

Reset to default 4

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 remend!). 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!

You have to set the form property standardSubmit to 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'
    }
]
发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>