Ajax回发不会返回任何JSON结果

时间:2016-09-20 13:34:48

标签: jquery asp.net ajax asp.net-mvc

我有一个下拉列表,它使用ajax调用回发给JsonResult并填充表元素。当下拉列表中的值不返回任何记录时,javascript函数会返回一个警报,但是当返回记录时,它不会通过该函数。 这是我的下拉列表:

@Html.DropDownListFor(model => model.SelectedFiscalYear, Model.FiscalYears, new { onchange = "PopulateTransactions();" })

这是我的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;
        }
    }

从我的功能中可以看到,警报(“确定”)总是显示,但如果有结果,我的表​​格不会被填充,我也没有得到警报(results.length)。如果没有结果,那么我会收到两个警报。我的控制台在第一次加载时填充了我的表,但每次更改下拉列表值时都应该通过Javascript onchange事件填充。这是我的Html表:

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

谁能看到我做错了什么? 感谢

1 个答案:

答案 0 :(得分:0)

@lamelemon我明白了。我为我的交易创建了一个POCO类,并获取我的实体并填充此类。当我返回这个新课时,它工作正常。我猜实体框架序列化有问题。 感谢大家的帮助。