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