2011-09-07 57 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未定義 –