我遇到了ajax调用问题。我不会在正确的页面上结束。
<script>
function showsql(form)
{
var str=form.q.value;
if (str=="")
{
document.getElementById("sqlreturn").innerHTML="";
return;
}
document.getElementById("sqlreturn").innerHTML="1";
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
document.getElementById("sqlreturn").innerHTML="2";
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadstatechange = function()
{
if(xml.http.readState==4 && xmlhttp.status==200)
{
document.getElementById("sqlreturn").innerHTML=xml.responseText;
}
document.getElementById("sqlreturn").innerHTML="4";
}
var url="index.php";
url = url+"?at=stats";
url = url+"&q="+str;
document.getElementById("sqlreturn").innerHTML=url;
xmlhttp.open("GET",url,true);
xmlhttp.send();
//document.getElementById("sqlreturn").innerHTML="3";
}
</script>
<form action="" method="GET" >
SELECT <input type="text" name="q" id="q" value="" />
<input type="submit" value="submit" action="showsql(this.form) "/>
</form>
<div id="sqlreturn">
</div>
有了这个,我应该去index.php?at = stats&amp; q =。我最终选择了index.php?q =。知道为什么会这样或如何解决它?谢谢你的帮助!
答案 0 :(得分:0)
xmlhttp.onreadstatechange
应该是
xmlhttp.onreadystatechange
这是你的工作代码吗?它有许多类似于上面的其他错误。参见
if(xml.http.readState==4 && xmlhttp.status==200)
{
document.getElementById("sqlreturn").innerHTML=xml.responseText;
}
修改强> 问题是即使您首先发送ajax请求,在此之后,表单也会像普通的http GET请求一样提交。因为您使用了提交按钮(输入类型=“提交”)而不是普通按钮(输入类型=“按钮”),并且您没有阻止默认提交事件
因此,使用普通按钮替换提交按钮。为此,只需将 type 属性替换为值“按钮”。而且我认为没有一个名为action for input元素的属性。您应该使用 onclick 属性而不是输入元素的操作。