如何 post 从表单到服务器的 extjs 数据?

How to post extjs data from form to server?

我已经了解如何从服务器获取数据到应用程序。 现在我面临 POST 任务。 我有表格,并希望通过单击按钮将 post 字段数据发送到服务器。

我正在尝试使用这个:

{//some controllercode

          xtype: 'button'  
          text: 'save',
          ui: 'confirm',
          scope: this,
          handler: function() {
              Ext.Ajax.request({
                  url:'/api/renter/',
                  method: 'POST',
                  params: {
                      ReplaceAllRefs: true
                  }
              })

              }
          }

Ext.Ajax的参数是什么定义了post通过url到服务器的数据? 我可以将此 class 用于 POST 任务还是不是最好的方法?

查看 Ext.Ajax.request 的 ExtJs 文档以了解选项 jsonData

jsonData : Object/String

JSON data to use as the post. Note: This will be used instead of params for the post data.
Any params will be appended to the URL.

所以你的 Ajax 请求应该看起来像

Ext.Ajax.request({
    url:'/api/renter/',
    method: 'POST',
    jsonData: {
        ReplaceAllRefs: true
    }
});

当您想提交 GET 和 POST 数据时,您可以使用 paramsjsonData

Ext.Ajax.request({
    url:'/api/renter/',
    method: 'POST',
    params: {
        someGetParam: 'value'
    },
    jsonData: {
        ReplaceAllRefs: true
    }
});

如果你想post形成数据你可以使用form.submit方法而不是Ext.ajax..

 var form  = your_form_panel.getForm();
 if(form.isValid()){ //isValid() will validate all your form fields 
      form.submit({
            url : '/api/renter/',
            params: params,    //additional parameters can be send in object
            success: function(form, o){

            },
            failure: function(form, o){

            }
      });
 }

最后我用了这段代码:

{
              text: 'save',
              ui: 'confirm',
              handler: function() {
                 
                 var dataup3 = this.up().items.items[0]; 
//get form's fields level
                 var dataSet3 = dataup.getValues();
                 
                 Ext.Ajax.request({
                  url:'/api/cutarea/',
                  method: 'POST',
                  params: dataSet3
                 })
                }
}
谢谢解答!