AJAX请求没有路由到正确的URL

时间:2011-12-03 18:55:04

标签: ajax url

我遇到了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 =。知道为什么会这样或如何解决它?谢谢你的帮助!

1 个答案:

答案 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 属性而不是输入元素的操作。