使用ajax修改javascript代码
我有以下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)
<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;
}
};