2009-06-23 7 views
0

Ich habe eine bestehende Anmeldeform, die in der traditionellen (Non-Ajax) Weise übermittelt. Ich möchte etwas Javascript einfügen, damit ich einige der Daten aus diesem Formular verwenden kann, um andere Felder in einer anderen Datenbank zu füllen. Wenn diese Einfügung viel Zeit in Anspruch nimmt (eine Minute), wird die Seite gesperrt, bis der AJAX-Aufruf zurückkehrt?Complex einreichen Formular mit AJAX, um zusätzliches Skript zu verarbeiten

<script language="javascript"> 
$(document).ready(function(){ 
    $("#setupform").submit(function(){ 
     doAJAXcallHERE(); 
    }); 
}); 
</script> 

Grundsätzlich tut, ist meine Webseite zum Stillstand mahlen gehen, wenn die PHP-Seite durch die Funktion AJAX aufgerufen über eine Minute dauert zu verarbeiten?

Danke!

+0

Meinst du 'wird es nicht andere Anfragen?' ? – karim79

Antwort

1

Wenn die Anforderung wird mehr als ein paar Sekunden dauern, sollten Sie vielleicht:

  • die Schaltfläche Senden deaktivieren, nachdem der Anruf erfolgt, so dass sie die Form erneut einzureichen immer wieder nicht versuchen.
  • Zeigen Sie eine Nachricht auf dem Bildschirm an, die sie darüber informiert, dass ihre Anfrage bearbeitet wird, und bitten Sie sie, dort zu bleiben!
  • Zeigen Sie eine Art von animated indicator zusammen mit der Nachricht.

Diese letzten 2 Punkte insbesondere wird sichergestellt, dass der Anwender bewusst ist, dass etwas hinter den Kulissen passiert. Wenn Sie erwarten, dass die Anforderung lange dauert, sollten Sie außerdem sicherstellen, dass die Zeitüberschreitungseinstellungen für den Webserver entsprechend angepasst werden.

0

bereits richtig beantwortet, aber ich möchte einige mehr hinzufügen ... auf PHP-Seite, müssen Sie die maximale Ausführungszeit über set_time_limit(0) festgelegt verwenden. Ihr Ajax-Skript muss gut optimiert sein. Vor allem IE6 hat viele Probleme beim Einreichen der Datei & Post-Daten mit Ajax. Wenn Sie seltsame Techniken verwenden (ich verwende oft), müssen Sie möglicherweise Ihr Skript zu einem einfachen 1. vor einiger Zeit hatte ich ein Problem mit IE6 genau wie Ihre. Browser blockierte sich selbst. nur weil eine Array-Definition zum Serialisieren mehrerer Optionsfelder. alle anderen Browser funktionieren gut mit dem Skript, aber IE6 stoppt, wartet & wartet ... auch wenn IE7 perfekt funktionierte.

übrigens, es scheint, dass Sie Jquery verwenden ... Ich rate Ihnen, jquery Blockui Plugin bei malsup.com zu verwenden. müssen Sie auch Ihren Besucher/Kunden informieren, um zu warten.