Я хотел бы знать, почему функция, вызванная AJAX
, не работает в этом сценарии? Предполагается, что FillObj()
вызывается при изменении выбора dropdownlist
.Функция ASP.NET MVC Ajax не работает?
<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>
Как вы можете видеть, у меня уже есть @onchange
набор для FillObj()
в Dropdownlist
коде. Однако, когда выбор меняется, он продолжает идти до alert('A error')
вместо успеха. Ниже приводится 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);
}
EDIT 1:
Хорошо, я сделал некоторые отладки и выяснили, что это сообщение произошла ошибка, когда функция вызывается :
В любом случае, чтобы исправить это?
делает действие контроллера получает называется, проверить использование точки останова с помощью отладчика? –
и используйте 'Url.Action' для URL-адресов вроде:' url: '@ Url.Action («FillObjectives», «Questions»)' ' –
Параметр контроллера ожидает целое число. Попробуйте изменить его на строку: FillObjectives (строковый модуль) –