Вы можете привязать функцию к глобальным событиям ajaxerror
$(document).ajaxError(function(event, request, ajaxOptions, thrownError){
if ( 4==request.readyState) { // failed after data has received
alert(ajaxOptions['url'] + " did not return valid json data");
}
else {
alert("something else wnet wrong");
}
});
или используйте $ .ajax () вместо $ .getJSON ()
function foo() {
// $.getJSON("<a href="http://localhost/test.txt" rel="nofollow noreferrer">http://localhost/test.txt</a>", function(data){});
$.ajax({
type: "GET",
url: "<a href="http://localhost/test.txt" rel="nofollow noreferrer">http://localhost/test.txt</a>",
success: function (data, textStatus) {
alert("succuess");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("request failed: " + textStatus);
},
dataType: "json"
});
}
edit: Но вы можете иметь в виду, что оба ajax (dataType: "json") и getJSON () (который просто вызывает .ajax (dataType: "json) ") сводится к data = window["eval"]("(" + data + ")")
... это может быть не то, что вам нужно, если вы не знаете, какие (произвольные) данные запрашивает ваш скрипт. И это может объяснить, почему firebug перехватывает синтаксическую ошибку при подаче html-кода документ вместо данных JSON.
В этом случае лучше запросить dataType: «string» и запустить данные через полноценный json-анализатор lib.