使用数据库中的JSON结果绑定选择下拉列表时出错

使用数据库中的JSON结果绑定选择下拉列表时出错,json,asp.net-mvc,drop-down-menu,Json,Asp.net Mvc,Drop Down Menu,绑定Ddl模块的Jquery代码 这是我的控制器动作 错误 错误:jquery-1.10.2.min.js:21未捕获类型错误:无法读取未定义的属性“length” 由于在AJAX回调中使用type:POST,请确保控制器操作方法中包含的HttpPostAttribute属性如下: public JsonResult GetModules() { var Query = "EXEC [dbo].[Usp_ComboBind] @TableName='Module'"; List&

绑定Ddl模块的Jquery代码

这是我的控制器动作

错误

错误:jquery-1.10.2.min.js:21未捕获类型错误:无法读取未定义的属性“length”

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

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, JsonRequestBehavior.AllowGet);
}

注意:无法读取undefined的属性'length',因为您试图迭代一个具有未定义值的对象,因为$。每个对象都需要一个数组或集合对象。

不相关,但删除无意义的contentType和数据属性,如果您进行POSTok,则不需要JsonRequestBehavior.AllowGet。谢谢,但错误并没有得到解决。yetUse$.eachResult,函数键,值{not Result.dthank您的代码在更改为Result而不是Result.d后仍然有效
$.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");
    }
});
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, JsonRequestBehavior.AllowGet);
}
[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);
}
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));
        });
    }
},