2016-05-17 18 views
-1

Ich habe JavaScript-Seite, die eine andere Seite aufrufen. Wenn die zweite Seite aufgerufen wird, sende ich Anfragedaten an SQL-Server, um zu sehen, wie viele Mal die zweite Seite aufgerufen wird. Aber sehen Sie das immer nur einmal. Ich habe dynamische Abfragezeichenfolgeflag hinzugefügt zu verhindern Cache von Browser dies ist mein Code:Javascript Seite Anruf Funktion

for(i=1;i<=30;i++) 
{ 
    var q="eeee?id=" + i; 
    window.location=q; 
} 

Aber alwayes sehen diese 2 Datensätze in der Datenbank statt 31 Datensätze:

javacall ==> erste Seite, die hat java Anruffunktion

eeee id = 30

warum Seite in der 30. Aufruf aufgerufen wird und nicht von 1 bis 30, zum Beispiel:?

javacall

eeee? Id = 1

.

.

.

eeee? Id = 30

Antwort

0

Der Browser überprüft nicht, ob location geändert hat, bis der JavaScript mehr läuft (es ist zu sehr damit beschäftigt, die JavaScript bis dahin läuft).

Wenn die Schleife zum Ende kommt, wird sie auf den letzten Wert gesetzt. Zu diesem Zeitpunkt registriert der Browser, dass er sich geändert hat, und lädt die neue URL.

Wenn dies nicht der Fall war, würde die erste Änderung dazu führen, dass der Browser die aktuelle Seite verlässt ... was die Ausführungsumgebung zerstört, in der das Skript ausgeführt wurde, das Skript abbricht und die nachfolgenden URLs nicht verursacht angefordert werden.

Wenn Sie mehrere HTTP-Anforderungen von JavaScript erstellen möchten, verwenden Sie Ajax. Normalerweise würden Sie dies über the XMLHttpRequest object tun.