Ankündigung

Einklappen
Keine Ankündigung bisher.

jquery ajax - ohne auf Ergebnis zu warten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jquery ajax - ohne auf Ergebnis zu warten

    Hallo!

    Wie mache ich einen jQuery-Ajax Request ohne auf die Antwort zu warten?
    Ich will einfach nur ein kleines PHP-Script anstoßen, welches keine Ausgabe erzeugt. (ajax_send_mail.php)
    Das Skript selbst läuft 10-20 Sekunden. Es soll aber nur im Hintergrund laufen.

    Im Moment wartet die Ursprüngliche Seite aber bis das Skript fertig ist! Wie muss ich meinen jquery-ajax-request bauen, dass das Skript nicht auf eine Erfolgsmeldung wartet?


    Code:
    	
    $.fn.nachricht_abgesendet = function(data){
                                $.ajax({
                                url: "ajax_send_mail.php",
                                type: "POST",          
                                data: data					
                                }); 
                    return false; 	
    				
    				};

    Viele Grüße
    Hotte

  • #2
    Was bedeutet bei dir "warten"?

    Kommentar


    • #3
      Mein Script schreibt eine vom Nutzer eingegebene Nachricht in die Datenbank und informiert alle anderen Nutzer, dass es eine neue Nachricht gibt.
      Das funktioniert soweit.

      Nachricht wird abgeschickt --> per ajax wird ein script aufgerufen, welches die Nachricht in die Datenbank schreibt. --> Wenn dieses Script fertig ist (Das dauert nur einen Bruchteil einer Sekunde) wird wieder per ajax ein weiteres Script aufgerufen, welches die Mails losschickt. (Das dauert 10-20 Sekunden, je nach Anzahl der E-Mail Empfänger). --> Zum Schluss wird per window.location.href auf die Startseite weitergeleitet.

      Und diese Weiterleitung auf die Startseite dauert je nach Anzahl der E-Mail Empfänger 10-20 Sekunden. (nehme ich alle E-Mail-Empfänger raus, funktioniert die Weiterleitung sofort)

      Das meine ich mit warten. Das Script wartet einfach, bis die Mails verschickt sind.
      Das will ich aber nicht.
      Ich will nur, dass der Mail-versenden Vorgang angestoßen wird. (Das Script gibt dem Benutzer keine Rückmeldung ob die Mails versendet wurden, also muss ich auch nicht warten. - Mail Vorgänge werden einfach in eine .log-Datei geschrieben)


      Kurzfassung:
      -> Hauptscript
      -> Ajax-speichere alles in die Datenbank (warten auf Rückgabe)
      -> Wenn Daten erfolgreich gespeichert, dann rufe Script "Ajax-schicke Mails los" auf
      -> Lass das Script "Ajax-schicke Mails los" allein arbeiten und gehe zurück auf die Startseite

      Kommentar


      • #4
        Dann erstell doch eine Warteschlange und bei deinem 2. Ajax Request "Wenn Daten erfolgreich gespeichert, dann rufe Script "Ajax-schicke Mails los" auf" schreibst du was in die Datenbank, dass dieser Vorgang noch ausgeführt werden muss.
        Zusätzlich brauchst du dann natürlich noch ein Script, welches zB über ein Cronjob aufgerufen wird, welches schaut, ob noch Dinge erledigt werden müssen.

        Kommentar


        • #5
          Soweit ich verstanden habe, arbeitet JavaScript doch asynchron? Also sollte dich dieser Vorgang eh nicht stören? Oder bin ich da irgendwo eingenickt im Unterricht...?

          Kommentar


          • #6
            PHP-Code:
            $.fn.nachricht_abgesendet = function (data) {
                $.
            ajax({
                    
            url"ajax_send_mail.php",
                    
            type"POST",
                    
            datadata
                
            });
                return 
            false;
            }; 
            $.fn ist der jQuery prototype - den willst du eigentlich nicht um so eine "Funktion" zu erweitern ($().nachricht_gesendet vs. $.nachricht_gesendet..). Du kannst solche Helfer direkt als Eigenschaft an die $-Funktion klatschen. Gib wenigstens die Promise ( return $.ajax ... ) zurück - so ist die Funktion relativ sinnlos.

            Kommentar

            Lädt...
            X