Ich habe 2 js Funktionen, request() und response(). Request fügt ein dynamisches Skript-Tag in das DOM ein und lädt ein "Skript" vom Server. Das Skript, das vom Server kommt, wird auf call response() gesetzt.Firefox führt keine "asynchrone" Last bei dynamischer Skript-Injektion aus?
Jetzt, wenn ich 5 Anrufe nacheinander nacheinander tätige, und wenn der erste noch wartet, werden die nächsten 4 Anrufe immer noch gemacht, die Antwort kommt zurück (das habe ich von Firebug gesehen), aber response() nicht bis der erste zurückkommt.
Dies geschieht nur in Firefox. :(
Warum ist das den Funktionsaufruf nicht machen
PS:
- wenn erste Anforderung verzögert wird, ich über die Ergebnisse ist es egal, ich will die letzte geladen werden und Aufruf Antwort ohne Verzögerungen ..
- Ich versuchte $ .ajax mit dataType auf 'jsonp', pure Javascript-Stil Einfügung von Skript-Tags und $. GetScript. Nichts scheint gut mit FF zu funktionieren :(
Edit: Für diejenigen, die Codebeispiele angefordert:
function request(){
var URL = 'http://xxx.xxx.xxx.xxx/cgi-bin/response.php?callback=?';
callHandle = $.getScript(URL);
}
function response(data){
alert(data);
}
die Anforderung Funktion ruft den PHP-Skript des Servers, die folgenden Code:
$data = $_GET['callback']; //using just to identify request uniquely.
sleep(rand(1,10));
echo "response(".$data.")";
Wenn nun erste Anfrage 10 Sekunden in Anspruch nimmt, und die zweite Anfrage dauert 2 Sekunden, die Antwort sollte für die zweite Anfrage zurückgerufen werden. Aber es wird die Antwort bekommen, aber anstatt zu alarmieren, wartet es auf die erste Anfrage, um in Firefox abzuschließen. Warum ist das so ?
Wie injizieren Sie das Skript-Tag über 'request()' zum DOM? – cherouvim
Geben Sie bitte einen Code ein. Es ist schwer zu erraten, was ohne es falsch ist. –
ursprüngliche Frage mit Codes bearbeitet. – Shrinath