2015-04-22 33 views
0

如何通過form.submit()將原始JSON發佈用戶名/密碼。通過.submit發佈原生Json

loginForm.submit({ 
    url: 'localhost/login', 
    method: 'post', 
    jsonData: loginForm.getValues() 
... 
    success: ... 

即使Ext.JSON.encode(loginForm.getValues())服務器接收爲用戶名=測試&密碼=測試,我需要{「用戶名」:「測試」,「密碼」:「測試」}

回答

1

你應該嘗試類似

Ext.Ajax.request({ 
    method: 'POST', 
    url: 'submit.php', 
    params : { 
     data: Ext.encode(loginForm.getValues()) 
    }, 
    success: function() { 
    }, 
    failure: function() { 
    } 
}); 

Source for reference

+0

是啊,這可能會奏效,但因爲有不好的API設計,我沒有與他們接觸,我必須張貼正是因爲{「用戶名」:」考」, 「密碼」: 「測試」}。添加數據:{「用戶名」:「測試」,「密碼」:「測試」}不會工作。 – flakerimi

+1

我看,你看過這個[post](http://stackoverflow.com/questions/2917581/how-to-post-json-data-with-extjs)? – Scriptable

+0

是的,我搜索了谷歌可以找到的所有東西,比如url-form-encoded params,username = test&password = test,這導致了服務器上的錯誤500。我能夠發佈與PHP和Chrome休息客戶端的JSON。 – flakerimi

0

當一個表單提交,它我沒有以JSON格式提交。 爲了提交JSON字符串,必須使用Ext.Ajax.request。 http://www.sencha.com/forum/showthread.php?132082-jsonData-in-submit-action-of-form

我不得不改變

loginForm.submit({}) 

Ext.Ajax.request({}) 

,並使用

params: Ext.JSON.encode(loginForm.getValues()),

壞DOCS。

+0

我認爲這些文檔相當廣泛。任何框架的最廣泛的在線文檔之一。是的,某些實施和設計方案沒有提到,但這是我們應用的。 – Yellen

1

與ExtJS常見的情況一樣,有一個簡單的答案。在登錄表單的配置:

Ext.create('Ext.form.Panel', { 
    title: 'Simple Form', 

    // The form will submit an AJAX request to this URL when submitted 
    url: 'save-form.php', 

    .... (blah blah blah) 

    jsonSubmit: true // <---- set this to TRUE 
}); 

設置屬性jsonSubmit: true

然後,當您使用loginForm.submit()時,您的對象將以JSON形式提交,而不是形成參數。

下面就以表格文檔的鏈接: http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.form.Panel