调整由extjs形式发送的json格式

时间:2011-09-07 20:16:09

标签: 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 个答案:

答案 0 :(得分: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,尽管有BTW。

这将导致:

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

如果仍然不合适,可以通过在每个任务值上调用parseInt来进一步破解它。

修改

补充说明。