Ich habe Client-Seite Logger, die einen Client-Seite Fehler auf Server für die Protokollierung POST.Wie stoppe die Verbreitung von ajaxerror Ereignis
var logger = (function ($) {
var module = {};
module.log = function (obj) {
try {
$.ajax({
type: "POST",
data: JSON.stringify(obj),
url: '/jslog'
})
.fail(function (jqXHR, textStatus, errorThrown) {
console.error('JS error report submission failed.');
// how to stop progating ajaxError here?
})
}
catch (ex) {
console.error('JS error report submission failed.');
// how to stop progating ajaxError here?
}
}
return module;
})(jQuery);
dann auf der Seite habe ich zwei Event-Handler angeschlossen.
- beliebigen AJAX-Fehler behandeln
jedes Java-Script-Fehlerprotokoll
$(document).ajaxError(function (event, jqxhr, settings, thrownError) { logger.log({ jqxhr: jqxhr }) }); window.onerror = function (msg, url, line) { logger.log({ message: msg, url: url, line: line }) }
AUSGABE
Die logger.log intern verwendet Ajax POST zu handhaben senden der Server. Wenn also die Protokollierung selbst fehlschlägt, wird erneut $(document).ajaxError
ausgelöst, wodurch erneut versucht wird, Fehler zu protokollieren, und so weiter. Es geht in einer kontinuierlichen Schleife.
Gibt es eine Möglichkeit, die Weiterleitung von ajaxError
in catch
oder fail
Event-Handler zu stoppen?
Wenn nicht, dann, wie ohne AJAX POST?
oder gibt es eine andere bessere Möglichkeit, dies zu handhaben (ohne anyother 3rd-Party-lib zu verwenden)