/ / jQuery Ajax .ajaxSuccess () -Ereignis wird nicht ausgelöst - Javascript, Javascript-Ereignisse, jQuery

jQuery Ajax .ajaxSuccess () Ereignis nicht feuernd - javascript, javascript-events, jquery

Ich habe ein natives Javascript-Objekt, das ich würdeWeisen Sie gerne den .ajaxSuccess-Rückruf zu. Der Grund dafür ist, dass mein Datenmodell nach einem erfolgreichen Ajax-Aufruf aktualisiert werden soll, ich aber nicht möchte, dass mein Datenmodell für die gesamte Javascript-Datei global ist. Und ja, ich habe zuvor überprüft, ob meine jQuery enthalten ist meine Skriptdatei.

Hier ist der Code:

$("#formButtonAddLink").click(function() {
$.ajax({
type: "POST",
url: "ajax/addlink",
data: {content: $("#formInputLinkContent").val(), subject: $("#formInputLinkSubject").val()},
dataType: "json",
error: function() {
alert("An ajax error occured adding link")
}
});
return false; //prevents html form submit
})

$(document).ready(function(){
var links = new Links(20,0);
$(links).ajaxSuccess(function() {
console.log("Hey.")    //This does not work.
});
$(document).ajaxSuccess(function() {
console.log("Document hey.")   //This shows up.
});
});

Antworten:

1 für die Antwort № 1

Die Grundidee von ajaxSuccess() ist:

Immer wenn eine Ajax-Anfrage erfolgreich abgeschlossen wird, löst jQuery die aus AjaxSuccess-Ereignis. Alle Handler, die bei registriert wurden Die .ajaxSuccess () -Methode wird zu diesem Zeitpunkt ausgeführt.

Soweit ich das verstehe aus dem Dokumentation du kannst nur das anhängen ajaxSuccess() Ereignishandler an einen Element, kein JavaScript-Objekt. Aus diesem Grund funktioniert es, wenn der Ereignishandler an den angehängt wird document.

Wir können unseren Event-Handler an jedes Element anhängen.

In diesem Fall, wenn Sie etwas Ähnliches haben wie:

<div class="links"></div>

Du könntest es tun:

$(document).ready(function(){
$(".links").ajaxSuccess(function() {
console.log("Hey.")
// use links in here:
var links = new Links(20,0);
});
});