2011-09-07 44 views
1

我有一个问题。调整json格式通过extjs发送表格

我需要发送一个json格式到我的后端服务。它需要我没有设法创建的东西。我所用的形式发送是这样的:

{ 
"jobs": { 
    "name": "dsvs", 
    "jobType": "CUSTOM", 
    "description": "sdvsdv", 
    "tasks": "14,15,16" 
} 
} 

但我需要发送的

{ 
"jobs": { 
    "name": "dsvs", 
    "jobType": "CUSTOM", 
    "description": "sdvsdv", 
    "tasks": [14,15,16] 
} 
} 

我怎么能做到这一点?

这是我的表单处理程序:

handler: function() { 
        var form = this.up('form').getForm(); 
        var formData = Ext.encode(form.getValues()); 
        Ext.Ajax.request({ 

         url: ND.url + 'dna/rjs/secure/service/rest/jobs.json', 
         method: 'POST', 
         waitTitle: 'Connecting', 
         waitMsg: 'Sending data...', 
         jsonData: { 
          jobs: form.getValues() 
         } 


          }); 


        }) 

我希望任何人有一个想法!

回答

1

你不能以“诚实”的方式。

然而,你可以把它转化为那个。

handler: function() { 
        var form = this.up('form').getForm(); 
        var formData = Ext.encode(form.getValues()); 
        formData.jobs.tasks = formData.jobs.tasks.split(','); 
        Ext.Ajax.request({ 

         url: ND.url + 'dna/rjs/secure/service/rest/jobs.json', 
         method: 'POST', 
         waitTitle: 'Connecting', 
         waitMsg: 'Sending data...', 
         jsonData: { 
          jobs: formData 
         } 
        }); 
}) 

在您的示例中,尽管拥有它,但您不使用formData

这将导致:

{ 
"jobs": { 
    "name": "dsvs", 
    "jobType": "CUSTOM", 
    "description": "sdvsdv", 
    "tasks": ["14","15","16"] 
} 
} 

如果仍然没有合适的,比你还可以通过对每个任务调用价值破解parseInt它。

编辑

新增澄清。

+0

我需要把它放在处理程序中吗? –

+0

请参阅编辑答案。 – ZenMaster

+0

感谢ZenMaster。这听起来像是我的问题的解决方案。但我认为我做错了什么。我一直得到:formData.jobs未定义 –