Не удается передать данные / параметр в вызов ajax - PullRequest
0 голосов
/ 26 июня 2019

У меня есть простая веб-страница с раскрывающимся списком и частичным представлением.Я пытаюсь обновить частичное представление на основе результата вызова ajax, инициированного при изменении выпадающего выбранного значения.Я могу достичь действия контроллера, но параметр, который я передаю, всегда равен нулю.

Я пробовал следующие способы передачи данных.

    var formData = new FormData();
    formData.append('Id', managerId)

    data:formData,
    data: { 'Id': managerId } ,
    data: JSON.stringify({ 'Id': managerId } ),

Вот действие контроллера.Я использую маршрутизацию MVC по умолчанию, другие маршруты не определены.

    [HttpPost]
    public ActionResult GetEmployees(string Id)
    {
        if (string.IsNullOrEmpty(Id))
        {
            Id = "2";
        }
        long numberId = Convert.ToInt64(Id);
        List<SEmployee> lstEmp = db.SEmployees.Where(x => x.LkupParentManagerId == numberId).ToList();
        return PartialView("_EmployeeTable", lstEmp);
    }

Вот полный вызов Ajax:

$(document).ready(function () {
$("#ddManager").change(function () {
    var managerId = this.value;
    var formData = new FormData();
    var form = $('form').serialize();
    formData.append('Id', managerId);
    //alert(managerId);
    $.ajax({
        url: "/SEmployees/GetEmployees",
        type: 'POST',
        data:formData,
        //data: { 'Id': managerId } ,
        //data: JSON.stringify({ 'Id': managerId } ),
        processData: false,
        success: function (result) {
            //alert(result);
            $("#tblEmployees").html(result);
        },
        error: function () {
            alert('Failed to retrieve the Employees.');
        }
    });
});

});

Вот раскрывающийся список в представлении.

    <div class="form-group">
            @Html.LabelFor(model => model.SelectedId, htmlAttributes: new { @class = "control-label required" })
            <div>
                @Html.DropDownListFor(model => model.SelectedId, Model.LstSelectManagers, new { @id = "ddManager", @class = "form-control", @margin = "auto" })
                @Html.ValidationMessageFor(model => model.SelectedId, "", new { @class = "text-danger", AutoPostBack = "True" })
            </div>
        </div>               

Я пробовал три вышеупомянутых способа передачи данных из представления в контроллер.Вызов поступает на контроллер, но не данные.Пожалуйста, помогите мне устранить неполадки вызова AJAX.Заранее спасибо.

1 Ответ

0 голосов
/ 26 июня 2019

Используйте это для вашего AJAX

$.ajax({
    url: "/SEmployees/GetEmployees/" + managerId,
    type: 'POST',
    processData: false,
    success: function (result) {
        //alert(result);
        $("#tblEmployees").html(result);
    },
    error: function () {
        alert('Failed to retrieve the Employees.');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...