Sencha touch 2 使用sencha touch调用函数时出错

Sencha touch 2 使用sencha touch调用函数时出错,sencha-touch-2,Sencha Touch 2,可能重复: 我是sencha touch的新手。我想创建一个表单并在数据库中提交该表单的详细信息。为此,我编写了以下代码 Ext.define("Form.view.Main",{ extend: "Ext.form.Panel", requires:['Ext.Button', 'Ext.Spacer', 'Ext.field.Password' ], config: { fullscreen: true, id:'form',

可能重复:

我是sencha touch的新手。我想创建一个表单并在数据库中提交该表单的详细信息。为此,我编写了以下代码

Ext.define("Form.view.Main",{
extend: "Ext.form.Panel",

 requires:['Ext.Button',
            'Ext.Spacer',
            'Ext.field.Password'
 ],
config: {
  fullscreen: true,
   id:'form',
items: [
    {
        xtype:'fieldset',
       items:[

           {
               xtype: 'textfield',
               name : 'name',
               label: 'Name'
           },
           {
               xtype: 'emailfield',
               name : 'email',
               label: 'Email',
               placeHolder: 'Email address',
               useClearIcon: true
           },
           {
               xtype: 'passwordfield',
               name : 'password',
               label: 'Password',
               allowBlank:'false'
           }
       ]

},
     {
                centered:'true',
                xtype:'button',
                id:'submitBtn',
                text:'Submit',
                ui:'confirm',
                width:100,
               listeners: {
                    tap : function(thisTxt,eventObj){
                        var form = Ext.getCmp('form');
                        var values = thisTxt.getValues();
                        alert(values.name);
                        Ext.Ajax.request({
                            url:'http://localhost/sencha2011/form/insert.php',
                            params:values,

                            success : function(response){
                                var text = response.responseText;
                                Ext.Msg.alert('Success', text);
                            },
                            failure : function(response){
                                Ext.Msg.alert('Error','Error while submitting the form');
                                console.log(response.responseText);
                            }

                        });

                    }

                }
    }
]
}
});
当我尝试执行此应用程序时,已成功执行(调试)。当我在浏览器中打开该应用程序时,控制台窗口中出现的错误为“Uncaught TypeError:无法调用未定义的方法'getValues',并且仅显示表单。当我单击“提交”按钮时,不会发生任何情况。任何人都可以帮助解决此问题。
先谢谢你

首先,您将表单的
id
放在了错误的位置,它应该放在
配置之外

config: {
  fullscreen: true,
  id: 'form'
  items: [
  ...........
}
其次,您的查询错误,请更改此查询:

var form = Ext.getCmp(form);
为此:

var form = Ext.getCmp('form');
最后,由于
getvalues
将返回一个对象,其中包含表单中每个字段的值,因此如果您想访问,例如,您的
name
字段,只需执行以下操作:

alert(values.name);
希望有帮助:)

而不是

var values = thisTxt.getValues();
试一试


因为
thisTxt
不是表单,应该在表单面板上调用。

user1479606,感谢您的回复,我如您所说更改了代码,但仍然在控制台中收到相同的错误消息(Uncaught TypeError:Object[Object Object Object]没有“getValues”方法)当我点击submit按钮时,什么也没有发生。你确定你在查询中放入了由引号包装的表单吗?user1479606,更新了上面的代码,你能检查一下吗?你的
id:form
应该放在
配置之外。请仔细阅读我的答案。我将id更改为config。但同样的错误即将出现。当我单击submit按钮时,什么也没有发生。控制台中出现了同样的错误。我可以更改变量吗,在tap函数中?do
console.log(thisTxt)
console.log(form)
console.log(this.parent)
console.log(this.parent.parent)
并检查浏览器的控制台,查看这些内容是什么,以及哪些具有getValues()方法。您可以使用JS调试器运行所有此类命令。我将所有控制台消息放置在控制台窗口中,正如您所说的,在控制台窗口中,相同的错误即将出现,未捕获类型错误:Object[Object Object]没有方法“getValues”函数(thisTxt,eventObj)我可以更改此函数中的变量吗
var values = form.getValues();
var values = this.parent.getValues();