Как вызвать метод и показать данные с асинхронностью?Это ничего не делает, когда я пытаюсь - PullRequest
0 голосов
/ 04 октября 2018

У меня есть метод, где я читаю некоторые детали о человеке.Что-то вроде мастер-детали.Это действие вызывается внутри поповера.Мне нужно сделать вызов метода асинхронно.Когда я вызываю метод с параметром 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 call:

$.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, работает.Я сохраняю задачу async и жду на контроллере и устанавливаю ajax async в false, это работает.Как это исправить?

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Проблема была в моей логике кода.Я установил данные перед вызовом метода, который вызывает ajax.

0 голосов
/ 05 октября 2018
  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. Готово !Вы можете console.log(data); в функции $ .ajax.success, чтобы увидеть возвращаемые данные

...