Такая штука, короче есть функция ajax в 50 строчек кода(jquery не использую) , когда надо загрузить какую-нибудь одну страницу в одно место, то всё нормально, если надо загрузить в два разных места, то надо вызвать функцию два раза, иногда прокатывает иногда нет , если не успевает прийти ответ с сервера(у меня дома всё работает нормально, но в других местах по разному), решил это дело исправить, сделал, так что передаётся массив того что надо загрузить и массив куда надо загрузить. Если бы сайт был на php, то одним запросом на сервер можно было всё передать, а так как сайт на народе, то приходится в два запроса делать. Если ставлю alert(1) в функции смены состояния xml, то работает(так как это ну типа задержки), если не ставить замедления, то ничего не работает. Вот код функции , до изменения, а потом после .
Первый код
Код:
function load(a,where)
{
if(window.ActiveXObject)
{
try
{
xml=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xml=false;
}
}
else
{
try
{
xml=new XMLHttpRequest();
}
catch (e)
{
xml=false;
}
}
if(!xml) alert("Error creating the XMLHttpRequest object");
xml.onreadystatechange = function()
{
if(xml.readyState != 4 || xml.readyState==0)
{
document.getElementById(where).innerHTML=" <img src='/img/pb.gif'> ";
}
if(xml.readyState == 4)
{
if(xml.status == 200)
{
document.getElementById(where).innerHTML=xml.responseText;
}
else
{
document.getElementById(where).innerHTML="Error: returned status code " + xml.status + " " + xml.statusText;
}
}
};
xml.open("GET", a, true);
xml.send(null);
}
Второй код
Код:
function load(what,where)
{
len=what.length;
xml = new Array(len);
for(li=0;li<len;li++)
{
if(window.ActiveXObject)
{
try
{
xml[li]=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xml[li]=false;
}
}
else
{
try
{
xml[li]=new XMLHttpRequest();
}
catch (e)
{
xml[li]=false;
}
}
}
for(li=0;li<len;li++)
{
if(!xml[li]) alert("Error creating the XMLHttpRequest object");
}
for(li=0;li<len;li++)
{
xml[li].onreadystatechange = function()
{
if(xml[li].readyState != 4 || xml[li].readyState==0)
{
document.getElementById(where[li]).innerHTML=" <img src='/img/pb.gif'> ";
}
if(xml[li].readyState == 4)
{
if(xml[li].status == 200)
{
document.getElementById(where[li]).innerHTML=xml[li].responseText;
}
else
{
document.getElementById(where[li]).innerHTML="Error: returned status code " + xml[li].status + " " + xml[li].statusText;
}
}
};
}
for(li=0;li<len;li++)
{
xml[li].open("GET", what[li], true);
xml[li].send(null);
}
}
-- Чт дек 17, 2009 11:37:34 --Короче я вроде понял, надо сделать wait -функцию, но как её сделать,которая будет задерживать выполнение именно этой функции? Как её сделать, может с помощью setTimeout?