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

私にとってはこれでした:成功関数の外側でjavascript変数を使用する

$.getJSON などを呼び出すと、デバッガーが接続されているため、タイミングとスコープが修正/変更されます。時間指定されたバックグラウンド イベントによって起動された xhr 応答からテーブル セルの値を更新していましたが、ネストされた成功関数でセルの更新を行う必要がありました。デバッガーを接続すると、魔法のように機能しました。

于 2014-03-23T16:01:41.237 に答える
0
  1. xmlhttpローカルで宣言します。
  2. として別の変数名を使用しlocationます。location現在の場所を操作するためのプロパティとメソッドを保持するグローバル変数です。

    function populate(string, s_location) {
        var xmlhttp;
    

xmlhttp現在、メソッド内の変数を上書きし続けていますpopulate。その結果、xmlhttpオブジェクトは最後の要求を指します。

于 2012-04-08T14:21:18.747 に答える