Funzioni di successo ed errore non triggerste nella chiamata Ajax

Di seguito c’è una chiamata Ajax che sto usando per determinare quali opzioni di menu mostrare agli utenti (so che è un metodo imperfetto, solo contro un time crunch per una demo). Quando la pagina viene caricata, posso passare attraverso il metodo controller in Visual Studio, quindi so che sta colpendo il controller e restituendo le informazioni corrette.

Guardando la console di rete di Chrome posso anche vedere che il browser ha ricevuto la risposta giusta. Tuttavia, non si console.logconsole.log né l’ alert . Nulla nel success o nei metodi di error viene eseguito neanche. Qualcuno vede cosa sta andando storto?

vista

  $(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"); } }); }; 

controllore

  [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); } 

Qui ci sono un paio di schermate della rete e console regolare in Chrome. I fastidi provengono da quando ho passato il metodo del controller e il programma ha restituito un valore al browser.

Console di rete

inserisci la descrizione dell'immagine qui

Console standard

inserisci la descrizione dell'immagine qui

C’è una c in più nel tuo

succcess:

Quindi la risposta è una richiesta 200, ma poiché non è stata definita no mapping for success , non viene mai registrata

È successo invece che successo

NealR

Avviso di cancellazione:

I callback jqXHR.success (), jqXHR.error () e jqXHR.complete () saranno deprecati in jQuery 1.8. Per preparare il codice per la loro eventuale rimozione, utilizzare invece jqXHR.done (), jqXHR.fail () e jqXHR.always ().

Controlla i call eseguiti, fail e sempre di seguito.

 $.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) {});

Sostituisce il metodo .complete () che è stato deprecato in jQuery 1.8. In risposta alla transazione eseguita correttamente, gli argomenti sono gli stessi di .done () (ad esempio a = data, b = jqXHR) e per le transazioni fallite gli argomenti sono gli stessi di .fail () (ad es. A = jqXHR, b = errorThrown). Questo è un costrutto alternativo per la funzione di callback completa sopra. Fare riferimento a deferred.always () per i dettagli di implementazione.

 $.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 (funzione (data, textStatus, jqXHR) {});

Sostituisce il metodo .success () che è stato deprecato in jQuery 1.8. Questo è un costrutto alternativo per la funzione di callback di successo sopra. Fare riferimento a deferred.done () per i dettagli di implementazione.

 $.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 (funzione (jqXHR, textStatus, errorThrown) {});

Sostituisce il metodo .error () che è stato deprecato in jQuery 1.8. Questo è un costrutto alternativo per la funzione di callback completa sopra. Fare riferimento a deferred.fail () per i dettagli di implementazione.

 $.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; }); 

Controlla qui per maggiori dettagli

Controlla qui per i dettagli della documentazione