Javascript / AJAX仅在调试时有效

时间:2012-04-08 14:19:57

标签: 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函数,代码仅在我调试时才有效。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

  1. Declare xmlhttp本地。
  2. 不同的变量名称用作locationlocation是一个全局变量,它包含操作当前位置的属性和方法。

    function populate(string, s_location) {
        var xmlhttp;
    
  3. 目前,您继续覆盖xmlhttp方法中的populate变量。因此,xmlhttp对象指向最后一个请求。

答案 1 :(得分:0)

就我而言:Use javascript variable outside success function

当调用$ .getJSON等时,附加调试器会修复/改变时间和范围。我正在通过定时背景事件触发的xhr响应更新表格单元格值,我需要在嵌套成功函数中进行单元格更新。附带调试器的东西神奇地起作用。