Abfrage: AJAX synchron gesendet?
00willson
- javascript
Hallo zusammen.
Folgende Frage: ich verwende AJAX-Calls und möchte überprüfen, ob diese synchron oder asynchron versendet wurden.
By the way: ich verwende jQuery.
Wenn ich als "Datenformat" XML verwende, kann ich diese Info auch aus der Response lesen. Allerdings verwende ich nicht immer XML. Gibt es eine Option, dies auch für andere Datenformate abzufragen?
Bsp.:
...
$.ajax({
type: "GET",
url: URL,
processData: false,
dataType: "xml",
timeout: 2000,
contentType: "application/xml; charset=UTF-8",
beforeSend: function() {...},
success: function() {...},
complete: function(xhr) {
if (xhr.responseXML) {
console.log("is async: " + xhr.responseXML.async);
}
}
});
Und um mir Sprüche zu ersparen: das Script ist nicht mehr "state-of-the-art", durch viele Hände gegangen und reichhaltig mit Plugins versehen. Einige dieser setzen explizit auf synchrone Übertragung ... und ich möchte mal unterstellen, daß dies seinen Grund hat. Jedoch hab ich das Gefühl, daß sich eben jene Änderungen auch auf nachfolgenden Code Auswirkungen hat - daher wüßte ich halt gern, ob ein Request event. synchron abgesetzt wird.
Besten Dank vorab!
Hallo,
Folgende Frage: ich verwende AJAX-Calls und möchte überprüfen, ob diese synchron oder asynchron versendet wurden.
By the way: ich verwende jQuery.
ich zitiere aus der API (auf Options klicken, erster Eintrag, verdammtes Ajax-Geraffel :-( ):
<zitat>
option async
By default, all requests are sent asynchronous (i.e. this is set to true
by default). If you need synchronous requests, set this option to false.
Note that synchronous requests may temporarily lock the browser,
disabling any actions while the request is active.
</zitat>
Freundliche Grüße
Vinzenz
Hi Vinzenz,
das stimmt zwar, allerdings werden diese default-Optionen - wie ich geschrieben habe - von einem Plugin verändert. Da sich die Seite ab diesem Zeitpunkt "gefühlt" wie synchron verhält, hätte ich gern nachgeprüft, ob die Änderungen der AJAX-Optionen (ungewollt) einen globalen Scope haben.
Viele Grüße
Hallo,
das stimmt zwar, allerdings werden diese default-Optionen - wie ich geschrieben habe - von einem Plugin verändert. Da sich die Seite ab diesem Zeitpunkt "gefühlt" wie synchron verhält, hätte ich gern nachgeprüft, ob die Änderungen der AJAX-Optionen (ungewollt) einen globalen Scope haben.
und was hindert Dich daran, Dir den Wert dieser Option ausgeben zu lassen?
Freundliche Grüße
Vinzenz
Hi Vinzenz,
genau darauf bezog sich ja meine Frage: wie geht das?
Grüße zurück.
Hi,
http://www.php-resource.de/forum/search.php?do=getnew
genau darauf bezog sich ja meine Frage: wie geht das?
Mittels alert beispielsweise.
Oder, du gehst das Debugging gleich etwas strategischer an, und schaust dir mittels Firebug an, welche Werte wann vorliegen (ggf. entsprechende debugger-Statements im Code einfügen).
MfG ChrisB
Hi Chris,
scheinbar habe ich meine Frage nicht präzise genug gestellt. Besagte AJAX-Option möchte ich zum Debuggen über FireBug ausgeben lassen. Nur liefert das Response-Objekt nur dann meine gewünschtes asynch-Flag, wenn ich die Daten als XML versende (Ausgabe des Response per console.debug, suche mir das Objekt responseXML und klick mich mal durch, was drin steht). Soweit alles prima.
Nur: wie kann ich mein async-Flag wo abfragen, wenn meine Daten nicht als XML versendet werden? Dann fehlt in der Response das responseXML-Objekt und ich weiß nicht, wo diese Info dann steht.
Die Parameter, die jQuery's $.ajax-Funktion steuern, sind leider/zum Glück gekapselt. In diesem Fall aber doof, weil ich nicht ran komme.
Daher: wo finde ich das async-Flag???
Danke vorab!
Hi,
Besagte AJAX-Option möchte ich zum Debuggen über FireBug ausgeben lassen. Nur liefert das Response-Objekt nur dann meine gewünschtes asynch-Flag, wenn ich die Daten als XML versende
Wieso Response?
Ob du asynchron arbeitest oder nicht, ist ein Parameter des *Requests*.
Nur: wie kann ich mein async-Flag wo abfragen, wenn meine Daten nicht als XML versendet werden?
Ich sehe nicht, was das mit XML oder nicht XML zu tun haben soll.
MfG ChrisB