Post 原始 Json 通过 .submit()

Post Raw Json via .submit()

如何通过 form.submit() post username/password 作为 Raw JSON。

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

即使 Ext.JSON.encode(loginForm.getValues()) 服务器接收用户名=test&password=test,我需要 {"username":"test","password":"test" }

你或许应该试试

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

Source for reference

When a form is submitted, it is not submitted in JSON format. In order to submit JSON string, Ext.Ajax.request must be used. 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()),

文档错误。

与 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 而不是表单参数提交。

这是表单文档的 link: http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.form.Panel