0

好吧,我有这个 javascript 代码:

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

我使用 ajax 来更新它。事实上,当我更新我的数据库时,我想将变量“更改”更改为值 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>标签被执行时,它会创建一个全局变量change,可以通过window.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 回答