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”
答案 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 }}需要一个数组或集合对象。