Ich habe eine JavaScript-Funktion, die zwei aufeinanderfolgende Ajax-Anfragen mit jQuery macht. Ich möchte sicherstellen, dass die erste Anfrage geladen wurde, bevor die zweite Funktion aufgerufen wird. Kann ich das irgendwie machen?Stellen Sie sicher, dass die erste AJAX-Funktion vor dem zweiten fertig ist
Antwort
Geben Sie entweder async: false
in den Optionen $.ajax
ein, oder führen Sie den zweiten Ajax-Anruf im complete
Rückruf des ersten Anrufs aus.
Wäre das nicht "async: false"? –
In der Tat würde es. Verdammt diese negative Logik. –
'async: false' funktioniert super. Die Reihenfolge, in der ich die beiden Funktionen anrufe, ist sehr unterschiedlich, daher ist es der Callback-Methode vorzuziehen. – Brian
In Ihrem Rückruf für die erste Funktion, machen Sie Ihren zweiten Anruf.
Für beste Ergebnisse sollten Sie wahrscheinlich die zweite Funktion im Rückruf des ersten aufrufen.
Beispiel:
$.post("http://www.somewebsite.com/page.php", function(data) {
// whatever
function2();
});
$.post("script1.php", {data:"val"}, function(response) {
$.post("script2.php", {data:response}, function(results) {
// this second call will be initialized when the first finishes
});
});
Eine beispielhafte Implementierung:
function callback() {$('div#second_ajax_output').load('http://www.google.com');}
$('div#first_ajax_output').load('http://www.yahoo.com',callback);
Edit: die Frage falsch verstanden; mein Fehler. Wenn Sie zwei AJAX-Requests gleichzeitig ausführen lassen möchten, aber erst nach dem Abschluss eines Callbacks einen Callback ausführen möchten, dann machen Sie das so!
Versuchen Sie folgendes:
var completedCount = 0;
var callback = function()
{
completedCount++;
if (completedCount == 2)
{
// Do something.
}
};
$.post('url-1', {}, callback);
$.post('url-2', {}, callback);
Mit jQuery die einfachste Art und Weise, wie das ist:
$.ajax({
type: "POST",
url: "some.php",
success: function(msg){
$.ajax({
type: "POST",
url: "some2.php",
success: function(msg){
alert("End of second call");
}
});
}
});
Der einfache Weg ist, um die zweite Anforderung, wenn die ersten Erträge (in der vollständigen Rückruf) abzufeuern.
Wenn Sie einen anspruchsvolleren Ansatz benötigen, werfen Sie einen Blick auf das AjaxQueue Plug-in. Sie können Anforderungen auf diese Weise einreihen.
- 1. Stellen Sie sicher, dass 'gem install nokogiri' 1.6.7.2 'vor dem Bündeln erfolgreich ist. Was läuft falsch?
- 2. Fehlermeldung: Stellen Sie sicher, dass 'Gem install debug_inspector -v' 0.0.2' 'vor dem Bündeln erfolgreich ist
- 3. Stellen Sie sicher, dass die Verbindungsliste frei ist.
- 4. Stellen Sie sicher, dass die Anwendung C# winforms eine bestimmte Funktion vor dem Beenden aufruft.
- 5. Azure Service Bus - Stellen Sie sicher, dass der Job fertig ist
- 6. Wie stellen Sie sicher, dass die partielle Neuerstellung von @ Html.Action vor $ (document) .ready (function() {}) abgeschlossen ist?
- 7. Stellen Sie sicher, dass ein Subprozess in Cocoa ungültig ist
- 8. So stellen Sie sicher, dass eine DLL vorhanden ist
- 9. Stellen Sie sicher, dass Text immer in Silverlight lesbar ist
- 10. Stellen Sie sicher, dass Objekte vergleichbar implementieren
- 11. So stellen Sie sicher, dass ein Video angesehen wurde
- 12. Ist es möglich, dass mit zwei sofort fertiggestellten Code die zweite Zeile fertig ist, bevor die erste Zeile fertig ist?
- 13. So stellen Sie sicher, dass alle von den Tests gestarteten Threads vor dem Abschluss gestoppt werden
- 14. Stellen Sie sicher, dass Facebook-Benutzer sich vor dem Login "registrieren"
- 15. Stellen Sie sicher, dass fgetcsv() die gesamte Zeile liest
- 16. So stellen Sie sicher, dass eine Variable ein Objekt ist
- 17. Stellen Sie sicher, dass die Protokollierung mit einer bestimmten Zeichenfolge
- 18. Stellen Sie sicher, dass ein benutzerdefinierter Pfad in PHP sicher ist
- 19. So stellen Sie sicher, dass die Person reCAPTCHA Validierung übergeben
- 20. Knoten Strom geleitet wird, vor dem Schreiben fertig ist
- 21. So stellen Sie sicher, dass die Ansicht sicher Null Ausnahmen ist
- 22. So stellen Sie sicher, dass die AJAX-Codierung funktioniert
- 23. So stellen Sie sicher, dass die Zugriffsoptionen zugänglich sind
- 24. Stellen Sie sicher, Variableninitialisierung C#
- 25. Java - Stellen Sie sicher, dass ein Objekt implementiert eine Schnittstelle
- 26. Sicherstellen, dass der Sitzungsspeicher vor der Login-Weiterleitung fertig ist
- 27. Stellen Sie sicher, dass/usr/local/bin in meinem $ PATH auf dem Mac ist
- 28. Das SDK wurde nicht initialisiert, stellen Sie sicher, FacebookSdk.sdkInitialize() erste
- 29. Stellen Sie sicher, dass die in dieser Codedatei definierte Klasse dem Attribut 'inherits' entspricht
- 30. Wie stellen Sie sicher, dass alle Threads bei Anwendungspausen pausieren?
Ist es der zweite * Ajax * -Aufruf, der warten muss, bis der erste zurückgegeben wurde, oder der zweite * Rückruf *, der warten muss? (dh müssen Sie warten, bevor Sie die zweite Ajax-Anfrage abfeuern, oder beide können nacheinander abgefeuert werden, aber Sie möchten sicherstellen, dass, wenn der zweite zuerst zurückkehrt, sein Rückruf blockiert wird, bis der erste zurückkommt) – Graza
Die 2. Funktion sollte erst ausgelöst werden, wenn die erste abgeschlossen ist. Die 1. Funktion erstellt ein Formularelement und die 2. Funktion nimmt diesen Formularwert an und führt einige Berechnungen basierend darauf durch. – Brian