2011-08-09 79 views
0

在我的應用程序中,我有一個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) { } 
     } 
    }] 
}); 

回答

1

您粘貼的HTTP請求不是POST'ing,它表示HTTP方法的「OPTIONS」。

我可以看不到任何語法錯誤,這與您的FormPanel錯誤,doLogin函數確實會發佈您在參數中定義的3條信息......我不知道您要爲WebService('GetInTouch', 'CommunicateCard')中的網址,因爲您沒有發佈該功能。

此外,雖然沒有什麼錯誤使用Ext.Ajax的提交表單,在FormPanel中提供了快捷Ext.Ajax的實現同樣的事情...

rpc.views.Contact.CommunicateCard.submit({ 
    url: 'someurl', 
    waitMsg: 'submitting', 
    success: function(form, response, responseText) { ... }, 
    failure: function(form, response, responseText) { ... } 
}); 

所以,你可以讓它做項目的重量提升到帖子等。

+0

我發佈了一個編輯。 –

+0

好吧,它只是返回一個網址..亞..現在的代碼應該做你期望它做..你可以嘗試我添加到我的答案.submit()方法,但你可能想要請再次看看Fiddler,因爲正如我提到的,您粘貼了OPTIONS請求的標題而不是POST(這就是Ajax。請求會產生)我不知道什麼會產生OPTIONS請求 - 我沒有使用Fiddler或Charles,所以我不能評論這是代理的結果還是什麼.. – chrixian

+0

是的,如果你看看我編輯的問題,你可以看到我使用'.submit()'函數,但它返回相同的結果。不知道這裏發生了什麼。 –

相關問題