1

目前我正在尝试动态填充网站。当我单步执行代码时,它运行良好。但是,当我按预期在页面加载时运行它时,它不起作用。相关代码为:

<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 函数,并且代码仅在我调试它时才有效。谢谢您的帮助!

4

2 回答 2

0
  1. xmlhttp本地声明。
  2. 使用不同的变量名称作为location. location是一个全局变量,它保存着操纵当前位置的属性和方法。

    function populate(string, s_location) {
        var xmlhttp;
    

目前,您不断覆盖方法xmlhttp中的变量populate。结果,xmlhttp对象指向最后一个请求。

于 2012-04-08T14:21:18.747 回答
0

对我来说是这样的:在成功函数之外使用 javascript 变量

在调用 $.getJSON 等时,附加调试器会修复/更改时间和范围。我正在从定时后台事件触发的 xhr 响应中更新表格单元格值,并且我需要在嵌套的成功函数中进行单元格更新。随着调试器的附加,事情神奇地起作用了。

于 2014-03-23T16:01:41.237 回答