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>
任何人都可以看到我做错了什么? 谢谢
您是否收到任何控制台错误?您应该使用'data:JSON.stringify:({id:$(“#ActivityId”)。val(),year:$(“#SelectedFiscalYear”)。val()}),'编码您传递的数据。然后我会建议在成功之后添加一个'error:'设置,比如'error:function(jqXHR,textStatus,errorThrown){console.log(textStatus,errorThrown); ''看看发生了什么。 –
是GetTransactions方法被调用?试试这个在ajax函数之后写入成功函数。 – Balan
是的,GetTransactions确实被调用。我也移动了下面的成功功能,甚至将它添加到成功电话中,但其中任何一个工作。 @Balan – devguy