2016-09-20 36 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类,并带走了我的实体并填充了这个类。当我返回这个新类时,它工作正常。我猜实体框架序列化有问题。 感谢大家的帮助。