我有一种方法可以读取有关某个人的详细信息。像一个主要细节。 该操作在弹出窗口内调用。我需要使调用成为异步方法。 当我使用ajax参数async:true调用该方法时,它将失败。它不执行任何操作,不显示弹出窗口,并且在控制台中不引发任何异常。 这是我的代码: C#
public async Task<ActionResult> PersonDetails(int id)
{
var model = await _context.Person.Where(e => e.Person == id && e.Age > 5).ToListAsync();
return View(model);
}
ajax通话:
$.ajax({
url: "/Home/PersonDetails/" + id,
method: "post",
async: true,
//data: { id: id },
success: function (data) {
set_data = data;
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR.statusText + textStatus + errorThrown);
}
});
当没有异步时,控制器中的Task和await以及将async设置为false都可以。此外,如果我保持异步Task并在控制器上等待,并将ajax async设置为false,也可以。 该如何解决?
答案 0 :(得分:1)
$.ajax()
调用本质上是异步的,默认为true,因此您无需添加async: true
使用data: { id: id }
,然后从+ id
删除url:
将async Task<ActionResult>
替换为JsonResult
(必需using System.Web.Mvc
)
在[HttpPost]
上方添加public JsonResult PersonDetails(int id) { ... }
使用var model = _context.Person.Where(e => e.Person == id && e.Age > 5).ToList();
返回return Json(model);
不返回视图
完成!您可以在$ .ajax.success函数中console.log(data);
来查看返回数据
答案 1 :(得分:0)
问题是我的代码逻辑。在调用调用ajax的方法之前,我已经设置了数据。