0

さて、私はこのJavaScriptコードを持っています:

<div id="change">
   <script>
      var change=0;
   </script>     
</div>

私はそれを更新するためにajaxを使用しています。実際、データベースを更新するときに、変数 'c​​hange' を値 1 に変更したいと考えています。

function update(value,username,competency)
{

   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)
      {
         document.getElementById("updateAll").innerHTML=xmlhttp.responseText; 
         document.getElementById("change").innerHTML='<script >var change=1</script> '; 
      }
   };
   xmlhttp.open("GET","Update_evaluation_ajax.php?value="+value+"&username="+username+"&competency="+competency,true);
   xmlhttp.send(null); 
}

これが機能しない理由を理解するのを手伝ってもらえますか?

4

2 に答える 2

1

<script>で追加されたタグinnerHTMLは実行されません。

change = 1を設定する代わりに設定しないのはなぜinnerHTMLですか?グローバル変数のように見えるchangeので、どこからでも変更できます。

于 2012-11-26T19:33:45.213 に答える
0

最初のタグが実行されると、経由でアクセスできる<script>グローバル変数が作成されます。changewindow.change

changeおそらく、コードの他の場所で変数を使用することを期待しています。そのコードを見ないと、適切な解決策を提案するのは困難ですが、応答関数内に設定するだけで、window.change実行される後続のコードは更新された値を使用します (スコープによって異なります)。

function () {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
  {
     document.getElementById("updateAll").innerHTML = xmlhttp.responseText; 
     window.change = 1;
  }
};

もちろん、グローバル変数は悪いですが、それはこの回答の範囲外です。

于 2012-11-26T19:40:07.127 に答える