2012-04-08 3 views
1

В настоящее время я пытаюсь заполнить сайт динамически. Когда я просматриваю код, он работает отлично. Однако, когда я запускаю его при загрузке страницы по назначению, он не работает. Соответствующий код:Javascript/AJAX работает только при отладке

<body onload="populate_all(string)";> 

function populate_all(string) 
{ 
    var split = string.split(" "); 
    for(i = 0; i < split.length; i++) 
    { 
    populate(split[i], 'main'); 
    } 
} 

function populate(string, location) 
{ 
    if (string.length==0) 
    { 
    document.getElementById(location).innerHTML=""; 
    return; 
    } 

    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     var divTag = document.createElement("div"); 

     divTag.className ="info"; 

     divTag.innerHTML = xmlhttp.responseText; 

     document.getElementById(location).appendChild(divTag); 
    } 
} 
xmlhttp.open("GET","populate.php?string="+string,true); 
xmlhttp.send(); 
} 

Я прочитал эту проблему достаточно, чтобы быть уверенным, что php не является проблемой. В основном: я выполняю javascript-функцию с AJAX несколько раз в цикле, и код работает только при отладке. Спасибо за помощь!

+0

Определите, что «это не работает». –

+0

Извините, «это не работает» не совсем понятно. Вместо того, чтобы создавать divs, которые я хочу, а это несколько div с разной информацией, он создает либо только последний div, либо четыре экземпляра последнего div. – NSchulze

ответ

0
  1. Declarexmlhttp локально.
  2. Используйте разные переменное имя как location. location - глобальная переменная, которая содержит свойства и методы для управления текущим местоположением.

    function populate(string, s_location) { 
        var xmlhttp; 
    

В настоящее время, вы держите перезапись переменную xmlhttp в методе populate. В результате объект xmlhttp указывает на последний запрос.

+0

Это сделало трюк! Мне нравится, когда все так просто. Благодаря! – NSchulze

0

Для меня это было так: Use javascript variable outside success function

При выполнении вызовов на $ .getJSON и т.д., с отладчиком приложенным он фиксирует/изменяет время и область видимости. Я обновлял значение ячейки таблицы из ответа xhr, инициированного синхронизированными фоновыми событиями, и мне нужно было обновлять ячейки во вложенных функциях успеха. С приложением отладчика магические действия.

Смежные вопросы