我不知道为什么我的代码不起作用。我只是想对我的一个控制器进行简单的调用,并获得一个json结果。
我视图中的脚本如下所示:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/WorkRolesController/checkNumRoles';
$.ajax({
type: "POST",
url: '@Url.Action("checkNumRoles", "WorkRolesController")',
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
以下是控制器中(简化的)动作方法的外观:
[HttpPost]
public ActionResult checkNumRoles()
{
return Json("skat", JsonRequestBehavior.AllowGet);
}
每次加载页面时,我都会收到包含字符串'error'的警告。
我错过了什么?
答案 0 :(得分:2)
在Controller
中提供控制器名称时,您不需要包含Url.Action
后缀。试试这个:
url: '@Url.Action("checkNumRoles", "WorkRoles")',
另请注意JsonRequestBehavior.AllowGet
是多余的,因为它只是一个POST请求以下是一个完整的示例:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "POST",
url: '@Url.Action("checkNumRoles", "WorkRoles")',
dataType: "json",
success: function(data, status) {
alert(data);
},
error: function() {
alert('error');
}
});
});
</script>
[HttpPost]
public ActionResult checkNumRoles()
{
return Json("skat");
}