【发布时间】:2016-06-22 05:56:24
【问题描述】:
我在 asp.net mvc 项目上工作,我想通过选择另一个下拉菜单的选项来刷新下拉菜单。为此使用 ajax 但运行请求时转到错误方法而不运行成功方法。
我的脚本
<script src="~/Scripts/jquery-2.0.0.min.js"></script>
<script>
function FillSubject() {
var GroupServicesId = $('#GroupServices_ID').val();
$.ajax({
url: "/Advertisements/FillSubject",
type: "GET",
data: { 'GroupServiceID': GroupServicesId },
dataType:"json",
success: function (Subjects) {
$("#Subject_ID").html("");
$.each(Subjects, function (i, subject) {
$("#Subject_ID").append($('<option></option>').val(subject.ID).html(subject.strSubjectName));
});
},
error: function (e) {
alert(this.url);
}
});
}
</script>`
我在控制器中的操作
public JsonResult FillSubject(string GroupServiceID)
{
//string GSID = GroupServiceID.Substring(1, (GroupServiceID.Length)-2);
var Subjects = db.Subjects.Where(c => c.GroupServicesID.ToString() == GroupServiceID);
var SubjectList = Subjects.Select(sl => new SubjectList { ID = sl.ID, GroupServiceID = sl.GroupServicesID, strSubjectName = sl.strSubjectName });
return Json(SubjectList,JsonRequestBehavior.AllowGet);
}
这是我在 .cshtml/razor 代码中的下拉菜单
<div class="form-group">
@Html.LabelFor(model => model.GroupServices_ID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.GroupServices_ID, new SelectList(GroupServicesList, "ID", "strGroupServiceName"), new { @class = "selectpicker", @onchange = "FillSubject()" })
@Html.ValidationMessageFor(model => model.GroupServices_ID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Subject_ID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Subject_ID, new SelectList(SubjectsList, "ID", "strSubjectName"), new { @class = "selectpicker" })
@Html.ValidationMessageFor(model => model.Subject_ID, "", new { @class = "text-danger" })
</div>
</div>
更新 1 - 22/06/2016
我更改我的控制器并在ajax 中提供Json result,但不要更新我的第二个下拉菜单
我的结果
[Object { ID="ffb1d85a-a822-41e1-8859-24db2b5bc72e", GroupServiceID="0cc2cdf6-b9d3-4274-9cc1-31daf5814458", strSubjectName="برنامه نویسی"}, Object { ID="1f65f038-0111-479a-bdf3-d43eb772af9d", GroupServiceID="0cc2cdf6-b9d3-4274-9cc1-31daf5814458", strSubjectName="آموزش زبان خارجه"}]
【问题讨论】:
-
能否请您在服务器端附加调试器,看看您的 .Net 代码中有什么错误?
-
同时检查浏览器控制台是否有任何客户端错误,如 404 或 500。
-
不调用我的操作进行调试并转到 ajax 错误
-
好的,所以请检查浏览器控制台。您必须收到 404 错误请求。在这种情况下,查看哪个完整的 URL 正在获取类似
http://yourdomain.com/Advertisements/FillSubject的形式。确保此类 URL 有效。 -
你用
HttpGet装饰你的JsonResult了吗?
标签: jquery ajax model-view-controller httprequest