我试图将json对象(extjs客户端)发送到asp.net服务器端应用程序:
这是请求(带有样本数据但逻辑相同):
var datiOrdine = [];
for (i = 0; i < elencoChk.length; i++)
{
datiOrdine.push
({
x: arr[i].value1, // string
y: arr[i].value2, // string
z: arr[i].value3, // string
k: arr[i].value4, // string (dd/MM/yyyy)
l: arr[i].value5, // double
});
}
Ext.Ajax.request({
url: '/RAMMVC/RDA/UpdateRDA',
params: { array: Ext.JSON.encode(datiOrdine) },
headers: { 'Content-Type': 'application/json; charset=utf-8' },
method: "POST",
success: function (response) {},
failure: function (response) {}
});
json对象:
[
{
"x":"GRT02",
"y":"0215000050",
"z":"0001",
"k":"30/01/2015",
"l":1413.5
}
]
这是我在服务器端Web应用程序上声明的方法:
public ActionResult UpdateRDA(?)
{
}
如何在UpdateRDA方法上声明param(?)以正确接收json对象?缺少任何注释?
如果我宣布
public ActionResult UpdateRDA(string array)
{
}
我获得了无效的Json Primitives异常。
编程语言:
客户端UI:extjs 4.1
服务器:asp.net MVC 3,net framework 4.0
答案 0 :(得分:1)
我能够让您的示例在类似的设置(MVC3,ExtJS 4.2)上进行一些小的更改。
对于您的Ajax请求,您不需要'method',因为'post'将是参数存在时的默认值。另外,我不熟悉'headers'属性,我只知道'defaultHeaders'。在任何情况下,您都不应该设置headers属性。
以下是我用作测试用例的内容:
var datiOrdine = [];
for (i = 0; i < 10; i++) {
datiOrdine.push({
x: "GRT02", // string
y: "0215000050", // string
z: "0001", // string
k: "30/01/2015", // string (dd/MM/yyyy)
l: 1413.5, // double
});
}
Ext.Ajax.request({
url: '/myserver/Controller/Method',
params: {
array: Ext.JSON.encode(datiOrdine)
},
success: function (response) {
alert('yes');
},
failure: function (response) { }
});
服务器端方法:
public ActionResult Test(string array)
{
var test = array;
return Content("");
}
答案 1 :(得分:0)
public ActionResult UpdateRDA(FormCollection collection)`
{
// TODO
}