Ввод основного контроллера .NET всегда равен AJAX - PullRequest
1 голос
/ 05 марта 2019

Это мой контроллер. У меня есть проблема, из-за которой я не уверен, почему моя строка ввода всегда пуста. Надеюсь, что кто-то может взглянуть на это и увидеть, в чем моя ошибка.

var Name;
$("#AccountCodeName").change(function() {
  Name = $("#AccountCodeName").val();
});

var form_data = {
  "Input": Name,
};

$("#AccountCodeName").autocomplete({
  source: function(request, response) {
    $.ajax({
      url: "/Configuration/AccountCodes/GetAllByName",
      method: "POST",
      data: form_data,
      contentType: "application/json",
      success: function(result) {
        console.log(result)
      }
    });
  }
});
[HttpPost]
public JsonResult GetAllByName([FromBody]string Input)
{
  JsonResult result = new JsonResult(null);
  result = this.Json(new
  {
      list = accountCodeData.GetAllByName(Input),
  });
  return result;
}

Ответы [ 3 ]

1 голос
/ 05 марта 2019

Проблема в том, что вы устанавливаете form_data.Name только при загрузке страницы. Это никогда не обновляется. Обратите внимание, что это не справочное значение.

Чтобы исправить проблемы, вам нужно вместо этого создать объект, который вы предоставляете data непосредственно перед отправкой запроса AJAX, например:

$("#AccountCodeName").autocomplete({
  source: function(request, response) {
    $.ajax({
      url: "/Configuration/AccountCodes/GetAllByName",
      method: "POST",
      data: { 
        Input: $("#AccountCodeName").val()
      },
      contentType: "application/json",
      success: function(result) {
        console.log(result);
        // note that you need to call 'response()' here providing the received data
      }
    });
  }
});
0 голосов
/ 05 марта 2019

Я использую jquery post с методами действия ядра .net для четных моделей

Вот фрагмент кода, который может вам помочь

JQuery

$.ajax({
    type: "POST",
    url: '/controller/action',
    data: { Name: $('#name').val()},
    success: function (response) {
        window.location.href = '/';
    }
});

.net Core Back-End

[HttpPost, Route("controller/action")]
public async Task<IActionResult> action(string Name)
{

}
0 голосов
/ 05 марта 2019

Я наконец-то нашел ответ

Вот как это должно быть для автозаполнения

Контроллер

    [HttpPost]
    public ActionResult GetAllByName(string term)
    {
        JsonResult result = new JsonResult(null);
        result = this.Json(new
        {
            list = accountCodeData.GetAllByName(term),
        });
        return result;
    }

Jquery

 $("#AccountCodeName").autocomplete({
        source: function (request, response) {
            console.log($("#AccountCodeName").val())
            console.log(request.term)
            $.ajax({
                url: "/Configuration/AccountCodes/GetAllByName",
                method: "POST",
                data: request,
                dataType: 'json',
                success: function (result) {
                    console.log(result)
            }
        });
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...