Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX请求未路由到正确的url_Ajax_Url - Fatal编程技术网

AJAX请求未路由到正确的url

AJAX请求未路由到正确的url,ajax,url,Ajax,Url,我在ajax调用中遇到问题。我没有找到正确的方向 <script> function showsql(form) { var str=form.q.value; if (str=="") { document.getElementById("sqlreturn").innerHTML=""; return; } document.getEl

我在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&q=。我最终选择index.php?q=作为替代。你知道为什么会这样,或者怎么解决吗?谢谢你的帮助

xmlhttp.onreadstatechange 
应该是

xmlhttp.onreadystatechange 
这是你的工作代码吗?它还有许多与上面类似的错误。看

if(xml.http.readState==4 && xmlhttp.status==200)
{
      document.getElementById("sqlreturn").innerHTML=xml.responseText;
}
编辑: 问题是,即使您首先发送ajax请求,就在那个之后,表单确实会作为正常的http GET请求提交。因为您使用了submit按钮输入类型=submit而不是普通按钮输入类型=button,并且您没有阻止默认的submit事件


因此,请使用普通按钮替换提交按钮。为此,只需将type属性替换为value按钮。我不认为输入元素有一个叫做action的属性。对于输入元素,应该使用onclick属性而不是action。

Oops,没有捕捉到这一点。这并没有解决我的大问题,但以后可能会引起头痛。我不知道你说的工作代码是什么意思。代码本身不起作用,但这正是我要努力做到的。谢谢:谢谢你的帮助,我试着把它改成onclick,但是当我这么做的时候,什么也没发生。javascript函数showsql运行。它正确地创建了url,但之后似乎什么也不做。@Kamis使用Firebug firefox扩展的网络面板调试ajax请求和响应。您是否更正了我之前在xmlhttp相关代码中指出的错误?无论如何,如果您指的是为什么在div中总是得到4而不是响应,因为在If条件之后,您再次将div sqlreturn的html替换为4。