在我的sencha-touch應用程序中,我有一個FormPanel
應該發佈到我的Web服務。爲什麼我的Ext.form.FormPanel發佈空值?
我有我的FormPanel佈局如下。
var config = {
// Url for the Web Service - Note that the WebServiceURL MUST end with a trailing "/"
WebServiceUrl: 'http://webservice.example.com/'
};
function WebService(controller, action) {
return(config.WebServiceUrl + controller + '/' + action);
};
rpc.views.Contact.CommunicateCard = new Ext.form.FormPanel({
items: [{
xtype: 'fieldset',
id: 'loginFormSet',
title: '',
items: [
{
xtype: 'emailfield',
placeHolder: 'Username',
name: 'Username',
id: 'Username',
required: true
}, {
xtype: 'passwordfield',
placeHolder: 'Password',
name: 'Password',
required: true
}, {
xtype: 'checkboxfield',
id: 'RememberMe',
name: 'RememberMe',
label: 'Save login?',
labelWidth: '40%'
},
{
xtype: 'button',
text: 'Login',
ui: 'confirm',
style: 'margin:2%;',
handler: function() {
doLogin();
}
}
]
}]
});
var doLogin = function() {
Ext.Ajax.request({
url: WebService('GetInTouch', 'CommunicateCard'),
method: 'post',
params: { UserName: rpc.views.Contact.CommunicateCard.getValues().Username, Password: rpc.views.Contact.CommunicateCard.getValues().Password, RememberMe: Ext.getCmp('RememberMe').isChecked() }
});
};
的問題是,當我按下「提交」,並觀看Fiddler/Charles後,我沒有看到任何形式的值。另外,當我的Web服務收到請求時,它也不會收到表單值。
下面是從查爾斯
選項/ GetInTouch/CommunicateCard HTTP/1.1
主機的HTTP響應:webservice.example.com
的Referer:http://192.168.5.206/ 訪問控制請求-方法:POST用戶代理:Mozilla/5.0(Macintosh; Intel Mac OS X 10_7_0)AppleWebKit/534.24(KHTML,如Gecko)Chrome/11.0.696.71 Safari/534.24
訪問控制請求報頭:X-要求-着,內容類型
接受:/
接受編碼:gzip,緊縮,SDCH
接受語言:EN-US,EN; Q = 0.8
接收字符集:ISO-8859-1,UTF-8,q = 0.7,*; q = 0.3
我試圖把我的一些方向,從這裏
http://mhelpdesk.com/simple-login-form-using-asp-net-mvc-and-sencha-touch/
根據Chrixian的回答,我也嘗試了下面的代碼,結果相同。
rpc.views.Contact.CommunicateCard = new Ext.form.FormPanel({
items: [{
xtype: 'fieldset',
id: 'loginFormSet',
title: '',
items: [
{
xtype: 'emailfield',
placeHolder: 'Username',
name: 'Username',
id: 'Username',
required: true
}, {
xtype: 'passwordfield',
placeHolder: 'Password',
name: 'Password',
required: true
}, {
xtype: 'checkboxfield',
id: 'RememberMe',
name: 'RememberMe',
label: 'Save login?',
labelWidth: '40%'
},
{
xtype: 'button',
text: 'Login',
ui: 'confirm',
style: 'margin:2%;'
}
],
submit: {
url: WebService('GetInTouch', 'CommunicateCard'),
waitMsg: 'submitting',
success: function(form, response, responseText) { },
failure: function(form, response, responseText) { }
}
}]
});
我發佈了一個編輯。 –
好吧,它只是返回一個網址..亞..現在的代碼應該做你期望它做..你可以嘗試我添加到我的答案.submit()方法,但你可能想要請再次看看Fiddler,因爲正如我提到的,您粘貼了OPTIONS請求的標題而不是POST(這就是Ajax。請求會產生)我不知道什麼會產生OPTIONS請求 - 我沒有使用Fiddler或Charles,所以我不能評論這是代理的結果還是什麼.. – chrixian
是的,如果你看看我編輯的問題,你可以看到我使用'.submit()'函數,但它返回相同的結果。不知道這裏發生了什麼。 –