Extjs Ajax请求将json对象发送到ASP.NET MVC webapp

时间:2015-10-13 13:09:52

标签: json ajax asp.net-mvc extjs

我试图将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

2 个答案:

答案 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
}