成功和错误函数未在Ajax调用中触发

下面是一个Ajax调用我正在使用它来确定向用户显示哪些菜单选项(我知道这是一个有缺陷的方法,只是反对时间紧缩的演示)。 当页面加载时,我可以在Visual Studio中逐步执行控制器方法,因此我知道它正在触及控制器并发回正确的信息。

看看Chrome的网络控制台,我也可以看到浏览器收到了正确的响应。 但是, console.logalert都没有触发。 successerror方法中的任何内容都不会执行。 有谁看到出了什么问题?

视图

  $(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中网络和常规控制台的几个屏幕截图。 麻烦来自于我逐步完成控制器方法并且程序已将值返回给浏览器。

网络控制台

在此处输入图像描述

标准控制台

在此处输入图像描述

你的额外有一个c

成功的情况下:

因此响应是200请求,但由于您no mapping for success定义no mapping for success ,因此它永远不会被记录

这是成功而不是成功

NealR

弃用通知:

jq 1.8中将不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调。 要准备最终删除的代码,请改用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"); }); 

.ajax()。always(function(a,textStatus,b){});

替换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"); }); 

.ajax()。done(function(data,textStatus,jqXHR){});

替换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; }); 

.ajax()。fail(function(jqXHR,textStatus,errorThrown){});

替换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; }); 

点击此处了解更多详情

点击此处查看文档详细信息