Функции Success и Error не срабатывают при вызове Ajax
Ниже приведен 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. Беспокойство происходит после того, как я прошел через метод контроллера, и программа вернула значение обратно в браузер.
Консоль сети
Стандартная консоль
2 ответа
Есть дополнительный c
в вашем
успешное выполнение :
Таким образом, ответ является запросом 200, но потому что у вас есть no mapping for success
определено, это просто никогда не регистрируется
Это успех, а не успех
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");
});
.ajax (). всегда (function(a, textStatus, b){});
Заменяет метод.complete (), который устарел в jQuery 1.8. В ответ на успешную транзакцию аргументы такие же, как.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) {});
Заменяет метод.success (), который устарел в 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 (функция (jqXHR, textStatus, errorThrown){});
Заменяет метод.error (), который устарел в jQuery 1.8. Это альтернативная конструкция для полной функции обратного вызова выше. Обратитесь к 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;
});