2015-07-21 65 views
0

我有Json的奇怪问题。Json不发送数据

我正在做一个控制器方法的ajax调用,它将一个字符串作为输入并发回我的类的列表。

基本上,我正在对下拉菜单的更改进行json调用,以便加载另一个下拉菜单的相应字段。

在下拉菜单1中,我有2个选项和一个占位符(“选择”)。

奇怪的是,当我选择2选项时,它将数据添加到下拉菜单2.但是,如果我选择选项1,那么它不会在json调用中获取数据,因此不会添加任何东西到下拉菜单2,尽管我的控制器函数正在返回json中的数据。

我的JSON呼叫低于:

function changeTable() { 
      var index = 0; 
      var info = { majoraccountvalue: document.getElementById("expancesMajorAccount").value }; 
      var dropdowm = $("#expancesMinorAccountName"); 
      jQuery.ajax({ 
       type: "POST", 
       url: "@Url.Action("GetData")", 
       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       data: JSON.stringify(info), 
       success: function (data) { 
        debugger; 
        var arr = data.MinorAccountHeads; 
        dropdowm.empty() 
        alert(data); 

        for (index = 0; index < arr.length; index++) { 
         dropdowm.append($('<option></option>').val(arr[index].ID).html(arr[index].Name)); 
        } 
       }, 
       failure: function (errMsg) { 
        alert(errMsg); 
       } 
      }); 
     } 

而且我的控制方法是:在

两种情况下
public JsonResult GetData(long majoraccountvalue) 
    { 
     Myclass model = new myclass(); 
     model.FillData(majoraccountvalue); 
     return Json(new { model.MinorAccountHeads }); 
    } 

我的控制器函数返回的数据。当我选择选项1,以及如果我选择选项2.

感谢

回答

1

我能够解决这个错误。因为,这个人亲自认识我,所以我能够帮助他解决问题。

基本上,问题是与正由所述功能发送的数据的序列化:公共JsonResult的GetData(长majoraccountvalue)

的功能是由串行化的自定义数据库的列表model.MinorAccountHeads返回JSON数据实现对象。

使用上面的方法代码进行序列化时,存在自引用循环。

我是能够通过使用Newtonsoft.json库作为改变方法来解决它: 公共对象的GetData(长majoraccountvalue) { MYCLASS模型=新MyClass的(); model.FillData(majoraccountvalue); return JsonConvert.SerializeObject(model.MinorAccountHeads); }

0
  1. 尝试使用高速缓存:阿贾克斯参数错误。
  2. 失败 - 不正确。你需要使用'错误'。可能是第一个请求你得到一个错误...