无法将数据/参数传递给ajax调用

时间:2019-06-26 18:49:02

标签: jquery ajax asp.net-mvc

我有一个带有下拉菜单和部分视图的简单网页。我正在尝试根据下拉选定值更改时启动的ajax调用的结果来更新部分视图。我可以执行控制器操作,但是我传递的参数始终为null。

我尝试了以下方法来传递数据。

    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 :(得分:0)

将此用于您的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.');
    }
});