2015-07-21 66 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. 失敗 - 不正確。你需要使用'錯誤'。可能是第一個請求你得到一個錯誤...