Лучший метод, который можно вызывать несколько раз до завершения предыдущего вызова. Обратите внимание, что если вы дважды вызовете множественныеPassportPoints, ваше предыдущее значение xmlhttp будет перезаписано. Есть два результата:
1 - все работает нормально, когда нет параллелизма (очень высокая вероятность),
2- первый звонок никогда не происходит (очень низкая вероятность, но он будет происходить время от времени, и его будет очень трудно обнаружить и воспроизвести)
Но следующий код использует локальную переменную и может (не проверяться) вызывать снова и снова.
function multiplePassportPoints(id, counter) {
var xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="addmorepoints.php";
url=url+"?id="+id+"&c="+counter;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
stateChanged(id, data, xmlhttp.responseText);
}
};
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged(id, counter,text)
{
document.getElementById(id+"_"+counter).innerHTML += text;
}