gewusst wie: übergeben Sie einen Wert, um jQuery Ajax success-handler
Geben die folgenden Ajax-Aufruf in jQuery:
{
.
.
.
,
getSomeData: function(args, myUrl, foo) {
$.ajax( {
type: "GET",
url: myUrl,
data: args,
async: true,
dataType: 'json',
success: myHandler
});
},
myHandler: function (data, textStatus, oHTTP, foo){ ... }
};
Kann Wert foo
irgendwie an die Argumente, die zum Erfolg-handler myHandler
? Gibt es eine Möglichkeit, übergeben Sie den Wert, bis zu dem server auf, und diesen Wert kommen zurück an den client in einem round-trip, tauchte in den Erfolg-handler, die Argumente-Liste? Ich kann nicht ändern die Struktur dessen, was zurückgegeben wird, in data
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie erklären
myHandler
innerhalb der Anfrage können Sie eine Verschluss.diese Weise
foo
verfügbar sein wird, um Sie in diesuccess
Rückruf.Wenn Sie $.ajax-Aufruf in eine Klasse und die Erfolgs-callback übergeben wird eine Methode der Klasse, es funktioniert nicht.
EDIT: Hier ist die Antwort. Beachten Sie, dass ich die Definition der Funktion ajaxCall als eine Methode in einer Klasse. Ich definiere diese.bevor, diese.Fehler, und diese.Erfolg als Methoden der ajaxCall, denn Sie können zum aufrufen von Methoden von der Superklasse.
@Unicron hatte die richtige Antwort aber nicht geben Sie ein gutes Beispiel. Check this out:
Indem er die pEvent-Funktion innerhalb der anonymen Funktion, feuert
on("click")
, das event-Objekt ist "eingefroren" (gekapselt) in seinem ursprünglichen Kontext. Selbst wenn Sie nennen es in den anderen Kontext der ajax-success-Funktion, es behält seine ursprünglichen Kontext.Konkreter: ich werde zu öffnen, ein modales Dialogfeld (formatierten Div) auf klicken, aber wenn der dialog geschlossen ist, möchte ich zu dem zurückkehren der Fokus zu dem element, auf das geklickt wurde, um es zu öffnen in Erster Linie...
Auf Erfolg, es ruft eine benutzerdefinierte Funktion
modal_dialog()
(an anderer Stelle definierten) auf und übergibt ein Objekt mit verschiedenen Einstellungen. DiereturnTarget
Einstellung enthält die HTML-ID-Attribut in dem element, auf das geklickt wurde; wenn ich also den dialog schließen, ich kann laufen$(options.returnTarget).focus();
zurückkehren Fokus auf das element.