mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 21.11.2017 15:08 Benutzername: Passwort: Auto-Login

Thema: Asynchroner Request mit jQuery im Safari vom 27.02.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Asynchroner Request mit jQuery im Safari
Autor Nachricht
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 33
Geschlecht: Männlich
Verfasst Fr 27.02.2009 12:04
Titel

Asynchroner Request mit jQuery im Safari

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

ich bastel gerade an einer Kleinigkeit mit Ajax und jQuery und der Safari lässt mich ein wenig verzweifeln. Folgende Ausgangssituation: In einem Link rufe ich mit dem href Attribut eine stinknormale Webseite auf, im onclick Attribut rufe ich zusätzlich noch eine Funktion auf, bsp:

Code:

<a href="foo.html" onclick="bar('123');">ein toller link</a>


Die Funktion bar(); soll den mitgegebenen Parameter nun an ein PHP Script weiterleiten, dieses schreibt den Wert in eine Textdatei. Der User soll von alledem nichts mitbekommen, weswegen ich auch einen asynchronen Request abschicke und keine Antwort erwarte:

Code:

$.ajax({
  type: "GET",
  async: true,
  url: "foo.php",
  data: "data=" + param
});


Das ganze funktioniert wunderbar, es wird meine HTML Seite aufgerufen und die Daten in die Textdatei geschrieben. Selbst, wenn das Backend mal hakt (ich habe in der PHP Datei testweise ein sleep(15); eingebaut), werden die Daten abgespeichert. Nur im Safari klappt das nicht. Weder mit noch ohne sleep. Erst wenn ich den Parameter async auf false setze, werden die Daten vom Safari aus auch abgespeichert. Dann habe ich allerdings das Problem, dass die Seite, die im href Attribut steht, erst dann aufgerufen wird, wenn der Request finalisiert ist. Das ist natürlich auch blöde, wenn ich bspw. 15 Sekunden warten muss, bis das Backend fertig ist.

Hat jemand eine Idee, wie ich das auch im Safari lösen kann? Unterstützt er überhaupt asynchrone Verbindungen? Oder kappt er die Verbindung der Funktion zum Backend, weil ich mittels href eine andere Seite aufrufe?

Bin über jeden Hinweis und Tipp dankbar.

Metty
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 33
Geschlecht: Männlich
Verfasst Mo 02.03.2009 10:26
Titel

Antworten mit Zitat Zum Seitenanfang

Niemand ne Idee?!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
zweitaccount

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Mo 02.03.2009 11:04
Titel

Re: Asynchroner Request mit jQuery im Safari

Antworten mit Zitat Zum Seitenanfang

Kann mir jetzt auch nicht vorstellen, das Safari den Request
cancelt, wenn man die Seite verlässt - selbst ausprobiert habe
ichs aber noch nie und auch grad keine Zeit dazu. Aber wenn
alle Sticke reißen könntest Dus abmildern indem du z.B. schreibst:
Code:

<a href="foo.html" onclick="return bar('123');">ein toller link</a>

und in der bar() beim browserabhängig onStart (jenachdem ob
und welches Framework du nutzt) ein true zurückgeben - beim
Safari halt erst beim onComplete.

Bringt Dir das was?

//edith: vielleicht reichts ja beim safari auch schon onStart...


Zuletzt bearbeitet von zweitaccount am Mo 02.03.2009 11:06, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 33
Geschlecht: Männlich
Verfasst Mo 02.03.2009 11:13
Titel

Antworten mit Zitat Zum Seitenanfang

Guter Ansatz. Werde ich nachher mal testen und hier Ergebnis mitteilen.
Danke!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 33
Geschlecht: Männlich
Verfasst Di 10.03.2009 12:36
Titel

Antworten mit Zitat Zum Seitenanfang

Hmmm, das ist nicht so das wahre. Ich arbeite mit jQuery, und so wie ich das beurteilen kann, gibt es während des AjaxCalls keine onStart Funktion...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 10.03.2009 14:39
Titel

Antworten mit Zitat Zum Seitenanfang

http://docs.jquery.com/Ajax
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 36
Geschlecht: Männlich
Verfasst Di 10.03.2009 14:44
Titel

Antworten mit Zitat Zum Seitenanfang

metty hat geschrieben:
Hmmm, das ist nicht so das wahre. Ich arbeite mit jQuery, und so wie ich das beurteilen kann, gibt es während des AjaxCalls keine onStart Funktion...

http://docs.jquery.com/Ajax/ajaxStart#callback
  View user's profile Private Nachricht senden
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 33
Geschlecht: Männlich
Verfasst Di 10.03.2009 14:55
Titel

Antworten mit Zitat Zum Seitenanfang

Okay, ich habe mich falsch ausgedrückt. Ich kann dieses Event ja nicht in den Ajax Call selber platzieren, worauf soll ich ihn dann anwenden?

Ich hatte an sowas gedacht:
Code:
$.ajax({
  type: "GET",
  async: true,
  url: "foo.php",
  data: "data=" + param,
  ajaxStart: function(){
   return true;
 }
});
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen jquery: Problem mit Safari
Asynchroner Mailversand
Ajax Request - Reload?
mootools - fx.slide und Request.Html
HTTP-Request manipulieren / Brauche Hilfe
jQuery Plugin - Slider als Input wie in jQuery UI
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.