我正在尝试在同一页面上运行多个AJAX调用,但似乎遇到了麻烦。我是新手,所以我真的不明白发生了什么。我有一个下拉菜单,我希望它在选择更改时更新两个不同位置的内容。每个都是自己工作,但当我尝试一起运行它时,它只更新我最后运行的任何脚本。任何帮助将不胜感激
<script>
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","../php/get_org.php?q="+str,true);
xmlhttp.send();
}
</script>
<script>
function list(str)
{
if (str=="")
{
document.getElementById("list").innerHTML="";
return;
}
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("list").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","../php/list_org.php?q="+str,true);
xmlhttp.send();
}
</script>
答案 0 :(得分:0)
原因很简单,您对两个请求xmlhttp
使用相同的全局变量。
在声明像var
这样的变量时使用var xmlhttp = new XMLHttpRequest();
。
您的代码初始化xmlhttp
并请求某个页面。在请求完成之前,您运行另一个函数,再次使用xmlhttp
。它被重新初始化,并设置了新的onreadystatechange
处理程序并进行了另一个请求。因此,实际上只执行了最后一个响应处理程序集。