我创建了一个表单,并尝试将其内容发送到服务器。我使用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));
}
}
答案 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'
}
]