【发布时间】:2016-12-18 19:48:58
【问题描述】:
我想知道为什么AJAX调用的函数在这种情况下总是失败? FillObj() 应该在 dropdownlist 选择更改时调用。
<div class="form-group">
@Html.LabelFor(model => model.Module, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Module, new SelectList(Model.ModuleList, "Value", "Text"),
"- Please select a Module -", new { @onchange = "FillObj()", @class = "form-control" })
</div>
</div>
如您所见,我已经在Dropdownlist 代码中将@onchange 设置为FillObj()。 However, when the selection changes, it keep goes to alert('A error') instead of success.以下是AJAX function:
function FillObj() {
var moduleID = $('#Module').val();
$.ajax({
url: '/Questions/FillObjectives',
type: "GET",
dataType: "JSON",
data: { module: moduleID },
success: function (objectives) {
$("#objective").html(""); // clear before appending new list
$.each(objectives, function (i, Obj) {
$("#objective").append(
$('<option></option>').val(Obj.ObjectiveId).html(Obj.objective));
});
},
error: function () {
alert('A error');
}
});
}
控制器:
public ActionResult FillObjectives(int module)
{
var objectives = db.Objectives.Where(o => o.ModuleId == module);
return Json(objectives, JsonRequestBehavior.AllowGet);
}
编辑 1:
好的,我做了一些调试,发现每次调用函数都会出现这个错误信息:
要解决这个问题吗?
【问题讨论】:
-
控制器动作是否被调用,使用调试器使用断点检查?
-
并将
Url.Action用于类似以下网址:url: '@Url.Action("FillObjectives","Questions")' -
控制器参数需要一个整数。尝试将其更改为字符串:FillObjectives(string module)
-
@FernandaInesDuran 我认为这应该不是问题
-
您在浏览器中遇到了什么错误。您显示的代码工作正常。最好的猜测是你的控制器中的代码抛出了一个异常——调试它!
标签: jquery ajax asp.net-mvc