Что произойдет, если я отправлю какой-либо запрос ajax и сразу же изменю страницу (скажем, следуйте по какой-либо ссылке) до того, как запрос вернется? Я имею в виду, я предполагаю, что объект XHR отправляет запрос на веб-сайт, но он удаляется (поскольку страница изменена) до получения ответа, поэтому где ответ должен быть отправлен?
Я задаю этот вопрос, потому что у меня возникла странная проблема с моим сайтом. У меня есть страница, которая загружает сообщения из хранилища данных через запрос Ajax. Если до завершения загрузки я нажимаю ссылку, я получаю onerror jQuery.ajax, вызываемый! Не знаю, почему это происходит.
EDIT: Это мой призыв к ajax. В нормальном случае вызывается обратный вызов успеха. Но когда я нажимаю на ссылку, вызывается обратный вызов ошибки! Я думаю о чем-то, может быть, потому, что данные должны быть отформатированы как JSON, но запрос срезается посередине, поэтому данные считаются недействительными, что приводит к тому, что jQuery вызывает обратный вызов ошибки?! Но тогда почему запросы срезаются посередине?
$.ajax({
type: (args.rel == "async" || args.rel == "dialog") ? "GET" : "POST",
url: href,
dataType: "json",
data: args.data ? args.data:{}, // send {} to ensure Content-Length header
success: function(data){
if (context) context.removeClass("ajax_wait");
if (args.hideonwait) $(args.hideonwait).show();
if (args.showonwait) $(args.showonwait).hide();
if (spinner) remove_spinner(context, spinner);
handle_response(args, context, target, data);
},
error: function(xhr, status, errorThrown){
if (context) context.removeClass("ajax_wait");
if (args.hideonwait) $(args.hideonwait).show();
if (args.showonwait) $(args.showonwait).hide();
if (spinner) remove_spinner(context, spinner);
ajax_error(args, context,
status + "-" + xhr.status,
errorThrown ? errorThrown : xhr.responseText);
}
});