ich eine AJAX-Anforderung haben, die wie folgt aussieht:Töte eine sich wiederholende AJAX-Request
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);
}
});
})();
Dies funktioniert gut und die Anforderung wiederholt sich alle 15 Sekunden. Jetzt möchte ich die Anfrage beenden, wenn ich auf eine bestimmte Schaltfläche klicke (wie abgebildet). Der Compiler sagt, dass das Fragment stats.abort() keine Funktion ist und die Schleife fortsetzt.
Irgendwelche Ideen?
Ich nehme an, Sie haben stats.abort() irgendwo definiert. Versuchen Sie, den Code zum Anfügen des Klickereignisses an #closeStats außerhalb der Statistikfunktion zu verschieben. Ich bin mir ziemlich sicher, dass du das nur einmal anhängen willst (nicht jedes Mal, wenn der Ajax-Aufruf erfolgreich ist) und ihm Zugriff auf den richtigen Inhalt für stats.abort() geben soll. –
Was ist "stats"? Wenn NICHTS mit dem Ajax-Aufruf zu tun hat, ist es eine Funktion. – epascarello
stats ist der Name der Funktion, die meine AJAX-Anfrage definiert. Es wird erfolgreich innerhalb von complete aufgerufen und als Teil von setTimeout gesetzt, daher verstehe ich nicht, warum es nicht auch innerhalb des Erfolgs aufgerufen werden kann. – webbul