2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Ajax вопрос
Сообщение17.12.2009, 10:08 
Такая штука, короче есть функция 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?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group