下面是一个Ajax调用我正在使用它来确定向用户显示哪些菜单选项(我知道这是一个有缺陷的方法,只是反对时间紧缩的演示)。当页面加载时,我可以在Visual Studio中逐步执行控制器方法,因此我知道它正在击中控制器并发回正确的信息。
查看Chrome的网络控制台我还可以看到浏览器收到了正确的响应。但是,console.log
或alert
都没有被解雇。 success
或error
方法中的任何内容都不会执行。有谁看到出了什么问题?
查看
$(document).ready(function ($) {
//Determine which links to show in navbar
window.onload = function () {
$.ajax({
type: 'GET',
url: '@Url.Action("CheckSecurity","Home")',
dataType: 'json',
succcess: function (data) {
console.log(data);
alert(data);
if (data == "admin") { $('#adminLink').show(); }
else if (data == "IT") { $('#ITLink').show(); }
else if (data == "viewer") { $('#viewerLink').show(); }
else if (data == "modifier") { $('#modifierLink').show(); }
},
error: function (data) {
alert("error");
}
});
};
控制器
[HttpGet]
public JsonResult CheckSecurity()
{
if (Security.IsAdmin(User)) return Json("admin", JsonRequestBehavior.AllowGet);
if (Security.IsItSupport(User)) return Json("IT", JsonRequestBehavior.AllowGet);
if (Security.IsViewer(User)) return Json("viewer", JsonRequestBehavior.AllowGet);
if (Security.IsModifier(User)) return Json("modifier", JsonRequestBehavior.AllowGet);
return Json("NA", JsonRequestBehavior.AllowGet);
}
以下是Chrome中网络和常规控制台的几个屏幕截图。麻烦来自于我逐步完成控制器方法并且程序已将值返回给浏览器。
网络控制台
标准控制台
答案 0 :(得分:4)
中有一个额外的
c
<强>成功的情况下:强>
因此响应是200请求,但因为您定义了no mapping for success
,所以它永远不会被记录
答案 1 :(得分:4)
成功而不是成功
NealR
jqXHR.success(),jqXHR.error()和jqXHR.complete()回调 将在jQuery 1.8中弃用。为他们的代码准备代码 最终删除,使用jqXHR.done(),jqXHR.fail()和jqXHR.always() 代替。
$.ajax({
url: 'Your Url',
data: JSON.stringify(Parameter list),
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json',
beforeSend: function (xhr, opts) {
}
}).done(function (data) {
debugger;
}).fail(function (data) {
debugger;
}).always(function(data) {
alert("complete");
});
替换jQuery 1.8中不推荐使用的方法.complete()。 响应成功的事务,参数与.done()相同(即a = data,b = jqXHR),对于失败的事务,参数与.fail()相同(即a = jqXHR,b = errorThrown)。 这是上面完整回调函数的替代构造。有关实施细节,请参阅 deferred.always() 。
$.ajax({
url: 'Your Url',
data: JSON.stringify(Parameter list),
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json',
beforeSend: function (xhr, opts) {
}
}).always(function(data) {
alert("complete");
});
替换jQuery 1.8中不推荐使用的方法.success()。 这是上面成功回调函数的替代构造。有关实施细节,请参阅 deferred.done() 。
$.ajax({
url: 'Your Url',
data: JSON.stringify(Parameter list),
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json',
beforeSend: function (xhr, opts) {
}
}).done(function (data) {
debugger;
});
替换jQuery 1.8中不推荐使用的方法.error()。 这是上面完整回调函数的替代构造。有关实施细节,请参阅 deferred.fail() 。
$.ajax({
url: 'Your Url',
data: JSON.stringify(Parameter list),
type: 'POST',
contentType: 'application/json, charset=utf-8',
dataType: 'json',
beforeSend: function (xhr, opts) {
}
}).fail(function (data) {
debugger;
});