2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Ajax вопрос
Сообщение17.12.2009, 10:08 


31/08/09
183
Такая штука, короче есть функция 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 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group