2013-04-29 158 views
1

我现在已经被提交:如何在extjs 4.2中提交表单的提交数据?

method: save 
name: Michael 
birthday: 1983-02-01 

,但我需要:

method: save 
data[name]: Michael 
data[birthday]: 1983-02-01 

和字段名必须像 “生日” 而不是 “数据[生日]”

+0

无法获取您的要求额外的数据发送到服务器层,使用extraParams在ExtJS的 – Hariharan 2013-04-29 07:42:08

回答

5

假设你”重新处理表单提交,您可以在其中代表表单的控件:

var formData = form.getFieldValues(); 

From Ext.form.Basic.getFieldValues

,然后通过AJAX提交:

Ext.Ajax.request({url: "postlocation.php", method: "POST", data: formData}); 

From Ext.Ajax.request

如果你不想提交表单,你可以重写表单上的按钮来调用模拟的过程提交。

// form def up here 
buttons: [ 
    text: "Pseudo-Submit", 
    id: "altsubmitbuttonthing" 
] 

在您的控制器(或按钮的事件处理程序:?!

this.control({ 
    "button[id=altsubmitbuttonthing]": { 
     click: function (control) { 
      var form = control.up("form"), // <- now you have your form and you can do whatever you want with it's data. 
       formData = form.getFieldValues(), 
       preparedData = {}; 

      formData.theDateField = new Date(data.theDateField); 
      formData.theIntField = parseInt(data.theIntField, 10); 

      preparedData.data.birthday = formData.birthday; 
      preparedData.data.name = formData.name; 

      Ext.Ajax.request({ 
       url: "/submissions", 
       method: "POST", 
       type: "json", 
       data: preparedData 
      }); 
     } 
    } 
}); 
+0

谢谢托马斯 但是这个解决方案是不合适的,因为它需要为字段使用“submitValue:false”属性,并且独立地将表单数据转换为字符串(例如日期)。 也许还有其他选择吗?可以通过“ api“(表单属性)? – constantant 2013-04-30 04:52:22

+0

不要提交表单吗?当然ING。 – 2013-04-30 13:07:28

+0

@Constantant如果这有助于解决你的问题,你会介意投我的方式upvote? – 2013-04-30 21:05:29