Informationsfrage eher als ein Problem, das ich gelöst habe. Konnte sonst keine befriedigende Antwort findenJQuery AJAX-Aufruf erhält ungültiges JSON, aber keine Fehlerhandler heißen
Ich bin neu in JQuery/JS, und ich versuche, Fehlerhandler zu testen, die ich für einen AJAX-Aufruf an ein Rails-Backend habe. Ich hatte verdammt viel Zeit, die Handler zum Feuern zu bringen.
- Ich versuchte, das Backend eine 500 und eine Stack-Trace zurückgeben, aber die Handler feuern nicht. Die Konsole zeigt
VM26658:1 Uncaught SyntaxError: Unexpected token S in JSON at position 0
. - Ich habe versucht, eine leere Antwort mit einem schlechten Anforderungsstatus zurückkehrt, aber denselben Fehler und Verhalten
- Ich habe endlich die Handler durch Rücksendung eine leere (aber gut gebildet) JSON Antwort und einen 400 Status
So scheint es, dass die Ajax-Fehlerhandler nicht ausgelöst werden, wenn der Antworttext nicht analysiert werden kann. Ist das korrekt? Wenn dem so ist, scheint das eine ziemlich substantielle und nicht intuitive Begrenzung der Handlerlogik zu sein. Wenn nicht, wie war ich dann dumm?
Danke!
Aktualisierung mit Code
In haml:
= simple_form_for @object, method: :put, url: setup_object_path, remote: true |f|
= f.input :some_input
= f.submit, class: 'js-submit'
In Coffee:
$(document).on 'ajaxStart', startFunction
$(document).on 'ajaxError', errorFunction
$(document).on 'ajaxComplete', completeFunction
Ergebnis: startFunction
Feuer für alle drei Fälle, aber errorFunction
und completeFunction
nur Feuer für Fall # 3
Ich habe auch versucht, direkt an js-submit
mit ajax:error
zu binden, aber hatte das gleiche Ergebnis
Parse-Fehler wird AJAX-Fehler-Handler auslösen, wenn 'dataType' eingestellt ist und/oder richtiger Content Type-Header auf dem Server festgelegt ist. Bitte zeigen Sie den entsprechenden Code an. Dies wird auch davon ausgegangen, Anfrage ist nicht 'JSonp' – charlietfl
mit Beispiel-Code aktualisiert, danke für die Hilfe – toppy42
Angst, die Haml-Referenzen bedeuten mir nichts. Anfragen werden alle im Browser gemacht, der nur weiß, was dort existiert – charlietfl