【发布时间】:2016-10-17 05:30:39
【问题描述】:
我正在使用 jquery MVC4 绑定下拉列表。在控制器中,我得到了所有必需的值,但是当我在 jquery 成功调用中放置警报时,它显示为空。它显示[对象,对象]。这是我到目前为止所尝试的。
$.ajax({
url: "@Url.Action("getrejectReason", "DocumentVerification")",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
error: function () {
alert(" An error occurred.");
},
success: function (result) {
alert(result);
$.each(result, function (index, item) {
options.append($("<option/>").val(item.value).text(item.text));
});
}
});
<select id="options"></select>
这是服务器端代码。
[HttpPost]
public JsonResult getrejectReason()
{
DB_KYC3Entities db = new DB_KYC3Entities();
var result = new SelectList(db.dbo_tm_rejectcomment, "Id", "RejectComment");
return Json(result, JsonRequestBehavior.AllowGet);
}
有人可以告诉我我在这里做错了什么吗?谢谢
【问题讨论】:
-
不要使用
alert()来调试代码。你的方法是发回一个序列化的SelectList,所以你的$.each()代码需要是$('#options').append($("<option/>").val(item.Value).text(item.Text));。 -
它应该像
options.append($("<option>").val(item.Value).text(item.Text));,你必须先声明选项成功var options= $("#options"); -
但是还有其他多个问题 - 删除
contentType: "application/json; charset=utf-8",(您甚至没有发送任何内容,更不用说对其进行字符串化了。JsonRequestBehavior.AllowGet是毫无意义的,因为您进行了 POST。您没有发回SelectList- 发回你所需要的匿名对象。 -
谢谢你,我按你说的改了一切。我删除了内容类型。我在下面的行中收到错误,说缺少括号,但我有所有括号。 options.append($("
-
我更改如下 return Json(result);这是正确的吗?
标签: jquery asp.net-mvc asp.net-mvc-4