我有这个javascript代码:
<div id="change">
<script>
var change=0;
</script>
</div>
我使用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);
}
你能帮我弄清楚为什么这不起作用吗?
答案 0 :(得分:1)
<script>
的 innerHTML
标记未执行。
为什么不设置change = 1
而不是设置innerHTML
?看起来change
是一个全局变量,因此您可以从任何地方更改它。
答案 1 :(得分: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;
}
};
当然全局变量很糟糕,但这超出了这个答案的范围。