2016-08-23 5 views
-1

Ich habe ein PHP-Skript, das eine Datenbank abfragt und eine Tabelle zurückgibt, abhängig von der Eingabe, zum Beispiel results.php? F = 1.Mehrere Ajax-Aufrufe scheitern manchmal

Ich versuche es mehrere Male von JavaScript zu nennen:

function go(n,divid) { 
document.getElementById(divid).innerHTML = "<img src=\"load.gif\">"; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     document.getElementById(divid).innerHTML = xmlhttp.responseText; 
    } 
} 
xmlhttp.open("GET", n, true); 
xmlhttp.send(); 
} 

Anruf später

go('results.php?print=1&nh=1','d1'); 
    go('results.php?print=2&nh=1','d2'); 
    go('results.php?print=3&nh=1','d3'); 
    go('results.php?print=4&nh=1','d4'); 

Der PHP-Code in eine SQLite3 Datenbank verbindet. Das Problem mit dem Obigen ist, dass es manchmal funktioniert, aber manchmal wird eine der Abfragen nicht von SQLite3 :: prepare() vorbereitet.

Was könnte falsch sein? Eine sqlite Race-Kondition? Ein Javascript Problem? Wenn results.php nur einmal aufgerufen wird, ist die Abfrage immer erfolgreich.

Danke.

+1

Nun, wenn ___but manchmal eine der Abfragen nicht von SQLite3 vorbereitet werden :: prepare() ___ dann könnte es nützlich sein, den PHP-Skript, um zu sehen, die diese Probleme – RiggsFolly

+1

55 Minuten werden mit scheinen genug zu kopieren/fügen Sie etwas zusätzlichen Code in Ihre Frage ein. Also VTC als Fragen Debugging-Hilfe suchen müssen gehören ...... – RiggsFolly

+0

Ich bin kein Stackoverflow Nerd zu Standby auf jeden Kommentar, ich bin sehr beschäftigt. Außerdem scheint es mir nicht, dass Sie tatsächlich helfen würden. – Michael

Antwort

1

Verwenden Sie xhttp anstelle von xmlhttp.

function go(n,divid) { 
var xhttp = new XMLHttpRequest(); 
document.getElementById(divid).innerHTML = "<img src=\"load.gif\">"; 
xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
     document.getElementById(divid).innerHTML = xhttp.responseText; 
    } 
} 
xhttp.open("GET", n, true); 
xhttp.send(); 
} 
go('results.php?print=1&nh=1','d1'); 
+0

'xhttp' und' xmlhttp' sind beide Variablen und daher ist dies irrelevant. OP hätte es "WoopyDo" nennen können, wenn sie es wollten, solange sie diesen Variablennamen weiterhin verwendeten – RiggsFolly