Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ajax修改javascript代码_Javascript_Ajax - Fatal编程技术网

使用ajax修改javascript代码

使用ajax修改javascript代码,javascript,ajax,Javascript,Ajax,我有以下javascript代码: <div id="change"> <script> var change=0; </script> </div> var变化=0; 我使用ajax来更新它。事实上,当我更新数据库时,我想将变量“change”更改为值1: function update(value,username,competency) { if (window.XMLHttpRequest)

我有以下javascript代码:

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

var变化=0;
我使用ajax来更新它。事实上,当我更新数据库时,我想将变量“change”更改为值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); 
}
功能更新(值、用户名、能力)
{
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“updateAll”).innerHTML=xmlhttp.responseText;
document.getElementById(“change”).innerHTML='var change=1';
}
};
xmlhttp.open(“GET”、“Update_evaluation_ajax.php?value=“+value+”&username=“+username+”&competency=“+competency,true”);
xmlhttp.send(空);
}
你能帮我弄清楚为什么这不起作用吗

不执行添加了
innerHTML
的标记

为什么不直接设置
change=1
,而不是设置
innerHTML
?看起来
change
是一个全局变量,因此您可以在任何地方对其进行更改。

执行初始
标记时,它会创建一个全局变量
change
,可通过
窗口进行访问。change

您可能希望在代码的其他地方使用
change
变量。如果看不到这些代码,很难提出一个好的解决方案,但您可以简单地设置
窗口。在响应函数中更改
,随后执行的任何代码都将使用更新的值(取决于范围):


当然,全局变量是不好的,但这超出了这个答案的范围。

可能重复我尝试过的文档。getElementsByTagName(“脚本”)[4]。innerHTML='var change=1';var script=document.createElement('script');脚本[(script.innerText==未定义?“textContent”:“innerText”)]='change=1;';document.body.appendChild(脚本);不起作用是尝试了change=1和window.change=1和document.change=1.if(change==1){window.onbeforeunload=function(e){var e=e | | | | window.event;//IE&Firefox if(e){e.returnValue='确定吗?';}//对于Safari return'确定吗?;};}这段代码没有执行,这就是为什么我知道它不工作的原因。如果你已经运行了代码,它就不会因为变量改变而再次运行。你得再打一次。或者,将
if change==1
位放在函数中。好吧,我确实发现了问题:如果(change==1){window.onbeforeunload=function(e){var e=e | | | window.event;//IE&Firefox if(e){e.returnValue='you sure?';}//Safari return“you sure?”;};}但是我必须这样做:window.onbeforeunload=function(e){if(change==1){var e=e | | | | window.event;//IE&Firefox if(e){e.returnValue='you sure?';}//对于Safari return'you sure?';};}
function () {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
  {
     document.getElementById("updateAll").innerHTML = xmlhttp.responseText; 
     window.change = 1;
  }
};