如何调用方法并使用异步显示数据?当我尝试这样做时,它什么也没做

时间:2018-10-04 18:18:29

标签: c# ajax asp.net-mvc asynchronous async-await

我有一种方法可以读取有关某个人的详细信息。像一个主要细节。 该操作在弹出窗口内调用。我需要使调用成为异步方法。 当我使用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,也可以。 该如何解决?

2 个答案:

答案 0 :(得分:1)

  1. $.ajax()调用本质上是异步的,默认为true,因此您无需添加async: true

  2. 使用data: { id: id },然后从+ id删除url:

  3. async Task<ActionResult>替换为JsonResult(必需using System.Web.Mvc

  4. [HttpPost]上方添加public JsonResult PersonDetails(int id) { ... }

  5. 使用var model = _context.Person.Where(e => e.Person == id && e.Age > 5).ToList();

  6. 返回return Json(model);不返回视图

  7. 完成!您可以在$ .ajax.success函数中console.log(data);来查看返回数据

答案 1 :(得分:0)

问题是我的代码逻辑。在调用调用ajax的方法之前,我已经设置了数据。