2016-09-20 34 views
0

我有一個下拉列表,它使用ajax調用回發到JsonResult並填充表元素。當下拉列表中的值沒有返回任何記錄時,javascript函數會返回一個警報,但是當有記錄返回時,它不會通過該函數。 這裏是我的下拉列表:Ajax回發不返回任何JSON結果

這裏是我的PopulateTransactions功能:

function PopulateTransactions() { 
      alert("OK"); 
      var success = function (results) { 
       var tbl = $("#tblTransactions"); 
       tbl.empty(); 
       alert(results.length); 
       for (var i = 0; i < results.length; i++) { 
        tbl.append("<tr><td>" + "Hello" + "</td><td>" + "World" + "</td></tr>"); 
       } 
      }; 

      $.ajax({ 
       url: '@Url.Action("GetTransactions", "ProjectProjet")', 
       type: "POST", 
       data: { 
        id: $("#ActivityId").val(), 
        year: $("#SelectedFiscalYear").val() 
       }, 
       dataType: "json", 
       success: success 
      }); 
     } 

這裏是我的JsonResult:

public JsonResult GetTransactions(int id, int year) 
    { 
     List<Transaction> data; 

     data = new Transaction().GetTransactionsByActivityFiscalYear(id, year); 

     return Json(data.ToArray()); 
    } 

從我的數據庫返回的實體:

public List<Transaction> GetTransactionsByActivityFiscalYear(int id, int year) 
    { 

     using (MyEntities ctx = new MyEntities()) 
     { 
      var query = ctx.Transactions.Where(a => a.ActivityId == id && a.ValueDate.Year == year).ToList(); 

      return query; 
     } 
    } 

從我的函數中可以看到,警報(「OK」)總是顯示,但如果有結果,我的表​​格不會被填充,並且我不會收到警報(results.length)。如果沒有結果,那麼我得到兩個警報。我的表在第一次加載時由我的Controller填充,但每次更改下拉列表值時都應該由Javascript onchange事件填充。這裏是我的Html表格:

<table id="tblTransactions"> 
       @foreach (var tran in Model.TransactionsByFiscalYear) 
       { 
        <tr> 
         <td> 
          tran.ValueDate 
         </td> 
         <td> 
          tran.Value 
         </td> 
        </tr> 
       } 
      </table> 

任何人都可以看到我做錯了什麼? 謝謝

+1

您是否收到任何控制檯錯誤?您應該使用'data:JSON.stringify:({id:$(「#ActivityId」)。val(),year:$(「#SelectedFiscalYear」)。val()}),'編碼您傳遞的數據。然後我會建議在成功之後添加一個'error:'設置,比如'error:function(jqXHR,textStatus,errorThrown){console.log(textStatus,errorThrown); ''看看發生了什麼。 –

+0

是GetTransactions方法被調用?試試這個在ajax函數之後寫入成功函數。 – Balan

+0

是的,GetTransactions確實被調用。我也移動了下面的成功功能,甚至將它添加到成功電話中,但其中任何一個工作。 @Balan – devguy

回答

0

@lamelemon我明白了。我爲我的交易創建了一個POCO類,並帶走了我的實體並填充了這個類。當我返回這個新類時,它工作正常。我猜實體框架序列化有問題。 感謝大家的幫助。