2011-12-03 49 views
0

我遇到了麻烦的ajax调用。我没有结束在正确的页面。AJAX请求没有路由到正确的url

<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?在=统计& Q =。我最终取决于index.php?q =。任何想法为什么这是或如何解决它?谢谢你的帮助!

回答

0
xmlhttp.onreadstatechange 

应该

xmlhttp.onreadystatechange 

这是你的工作代码?它有许多类似于上述的其他错误。见

if(xml.http.readState==4 && xmlhttp.status==200) 
{ 
     document.getElementById("sqlreturn").innerHTML=xml.responseText; 
} 

编辑: 问题是,即使你是第一次发送Ajax请求,只是在那之后,表单也提交作为正常的HTTP GET请求。因为您已经使用了提交按钮(输入类型=“提交”)而不是普通按钮(输入类型=“按钮”)并且您尚未阻止默认提交事件。

因此,使用普通按钮替换提交按钮。为此,只需替换类型属性值“按钮”。我不认为有一个称为action的属性用于输入元素。您应该使用onclick属性而不是针对输入元素的操作。

+0

哎呀,没有明白。它并没有解决我的大问题,但可能会在稍后导致头痛。我不确定你的代码是什么意思。代码本身不起作用,但这正是我试图去工作。谢谢:) – Kamis

+0

@Kamis检查更新后的帖子。 –

+0

感谢您的帮助,我尝试将其更改为onclick,但是当我这样做时,没有任何反应。 javascript函数showsql运行。它正确地创建网址,但在此之后它似乎没有做任何事情。 – Kamis