2012-04-08 70 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不是問題。基本上說:我在循環中多次使用AJAX運行JavaScript函數,並且代碼僅在調試時才起作用。謝謝您的幫助!

+0

定義「它不起作用」。 – 2012-04-08 14:21:28

+0

對不起,「它不工作」不是很清楚。而不是創建我想要的div,這是幾個具有不同信息的div,它只創建最後一個div的最後一個div或四個實例。 – NSchulze 2012-04-08 16:03:27

回答

0
  1. Declarexmlhttp本地。
  2. 使用不同變量名稱爲locationlocation是一個全局變量,它擁有操作當前位置的屬性和方法。

    function populate(string, s_location) { 
        var xmlhttp; 
    

目前,你保持在populate方法覆蓋xmlhttp變量。結果,xmlhttp對象指向最後的請求。

+0

這個伎倆!當事情很簡單時,我喜歡它。謝謝! – NSchulze 2012-04-08 16:04:29

0

對我來說是這樣的:Use javascript variable outside success function

當進行到$ .getJSON等電話,使用調試器附着它修復/改變的時機和範圍。我正在更新由定時後臺事件觸發的xhr響應中的表格單元值,並且我需要在嵌套成功函數中進行單元更新。調試器附帶的東西神奇地工作。