У меня есть запрос AJAX, который выглядит следующим образом:Убейте запрос повторяющегося AJAX
var statistics = "link-to-a-JSONP";
function team_stats(json) {
alert(json);
}
(function stats() {
$.ajax({
type: 'GET',
url: statistics + '?callback=jsonp',
crossDomain: true,
dataType: 'jsonp',
jsonpCallback: 'team_stats',
jsonp: 'callback',
data: {},
success: function(data) {
var test += '<div>' + data + '</div>';
$(".content").append(test);
/* a close button that closes the tab and kills the request */
$("#closeStats").on("click", function() {
stats.abort();
});
},
complete: function() {
setTimeout(stats, 15000);
}
});
})();
Это прекрасно работает, и запрос повторяется каждые 15 секунд. Теперь я хочу убить запрос, когда я нажимаю определенную кнопку (как показано). Компилятор говорит, что параметр stats.abort() не является функцией и продолжает цикл.
Любые идеи?
Я предполагаю, что у вас есть stats.abort(), определенная где-то. Попробуйте переместить код для привязки события click к #closeStats вне функции статистики. Я уверен, что вы только хотите присоединить это один раз (не каждый раз, когда вызов ajax успешно завершен) и должен предоставить ему доступ к правильному контенту для stats.abort(). –
Что такое «статистика»? Если НИЧЕГО не связано с вызовом Ajax, это функция. – epascarello
stats - это имя функции, которая определяет мой запрос AJAX. Он успешно вызван изнутри, установив его как часть setTimeout, поэтому я не понимаю, почему его нельзя назвать внутренним успехом. – webbul