2013-06-06 92 views
0

我有以下json对象,抱歉的图像;Json发布数组有空值

enter image description here

jQuery代码我有这个样子的;

var data = { 
    table: table, 
    favour: $("[name='radFavour']:checked").val(), 
    data: jsonObj 
}; 

$.ajax({ 
    url: appDomain + "/Compare/Ajax_Update", 
    type: "post", 
    dataType: "json", 
    data: data 
}); 

c#代码看起来像;

[HttpPost] 
public void Ajax_Update(CompareFVM fvm) 
{ 
} 

FVM包含一个用于表格和赞成的字符串,并且这两个属性的数据通过。

对于“数据”,我在FVM中有以下内容:

public List<CompareItem> data { get; set; } 

而该项目;

public class CompareItem 
{ 
    public int prodId { get; set; } 
    public int stageId { get; set; } 
    public string value { get; set; } 
    public string property { get; set; } 
} 

该列表中包含正确数量的元素,在这种情况下为两个,但其中每个元素都设置了空值。

所以我发回的数据没有通过数组元素,但是它是针对单个字段的。

任何想法?

+0

我试过列表,IEnumerable和一个数组。我也尝试过JSON.stringify。没有任何工作 – griegs

回答

1

而ajax调用时,将对象名称传递为'fvm'(名称应该与C#代码参数匹配)。另外,请使用JSON.stringify(data)检查传递的json abject。

var fvm = { 
     table: table, 
     favour: $("[name='radFavour']:checked").val(), 
     data: jsonObj 
    }; 

    $.ajax({ 
     url: appDomain + "/Compare/Ajax_Update", 
     type: "post", 
     dataType: "json", 
     data: JSON.stringify(fvm) 
    }); 
+0

所有名称匹配的是传递。就像我说的,我将两个对象传回“数据”。在C#结尾,我的FVM.data列表有两个对象。两者都包含默认值,而不是实际的数据。所以它知道有两个对象,但映射是搞砸了。 – griegs

+0

而且我已经尝试了扎线,那也没有工作。 – griegs

+0

我认为[这个链接](http://stackoverflow.com/questions/11736431/make-cross-domain-ajax-jsonp-request-with-jquery/11736771#11736771)可以帮助你 – Paritosh

0

就立足关什么类似的事情我已经在过去做的,我会组织你的代码如下所示:

// if your C# is 
public void Ajax_Update(CompareFVM fvm) { 
} 

// then your ajax call should be along the lines of 
$.ajax({ 
    data : { 
     'data' : [ 
      { /* compareItem */ }, 
      { /* compareItem */ }, 
      // ... 
     ]   
    } 
}) 

的东西存在,你的C#端点期待的对象,所以你应该给它一个JSON对象。

如果你的C#类是

public class CompareFVM { 
    public IList<CompareItem> data { get;set; } 
} 

那么你相应的JSON应该是:

{ 'data' : [] } 

其中.dataCompareItem对象的数组。

例如

{ 
    'data' : [ 
     {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'}, 
     {'prodId':'3175','stageId':'19045','value':'TUE','property':'despatchDay'} 
    ] 
} 
+0

我已经尝试硬编码阵列数据,就像你在这里和阵列有正确的元素数量,但数据是空的 – griegs