绑定错误使用数据库中的JSON结果选择DropDown

时间:2018-08-16 07:53:15

标签: json asp.net-mvc drop-down-menu

jls-1.asciidoc
jls-2.asciidoc
jls-3.asciidoc
...

将jQuery代码绑定到BInd Ddl模块

<select id="DdlModule" class="form-control input-sm "> </select>

这是我的控制器操作

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "/Job/GetModules",
    data: "{}",
    dataType: "json",
    success: function (Result) {
            $("#DdlModule").append("<option value='0'>---Select---</option>");
            $.each(Result.d, function (key, value) {
                $("#ddlmodule").append($("<option></option>").val(value.modId).html(value.modName));
            });
    },
    error: function (Result) {
        alert("Error");
    }
});

错误

  

Error:jquery-1.10.2.min.js:21未捕获的TypeError:无法读取未定义的属性“ length”

1 个答案:

答案 0 :(得分:1)

由于您在AJAX回调中使用type: "POST",因此请确保控制器操作方法中包含HttpPostAttribute属性,如下所示:

[HttpPost]
public JsonResult GetModules()
{
    var Query = "EXEC [dbo].[Usp_ComboBind] @TableName='Module'";
    List<Usp_ComboBind_Module> objModule = objDbContext.Database.SqlQuery<Usp_ComboBind_Module>(Query).ToList();
    return Json(objModule);
}

然后在迭代undefined函数参数之前对success结果中的Result进行检查:

success: function (Result) {
    if (typeof Result !== 'undefined' && Result != undefined) {
        $("#DdlModule").append("<option value='0'>---Select---</option>");
        $.each(Result, function (key, value) {
            $("#ddlmodule").append($("<option></option>").val(value.modId).html(value.modName));
        });
    }
},

注意: 由于您正在尝试迭代具有undefined值的对象,因为{{1 }}需要一个数组或集合对象。