AJAX-запрос не перенаправляется на правильный URL - PullRequest
0 голосов
/ 03 декабря 2011

У меня проблемы с вызовом 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 = вместо. Любая идея, почему это или как это исправить? Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 декабря 2011
xmlhttp.onreadstatechange 

должно быть

xmlhttp.onreadystatechange 

Это ваш рабочий код? У него есть много других ошибок, похожих на выше. См

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

EDIT: Проблема в том, что, хотя вы сначала отправляете ajax-запрос, сразу после этого форма отправляется как обычный HTTP-запрос GET. Поскольку вы использовали кнопку отправки (тип ввода = "отправить") вместо обычной кнопки (тип ввода = "кнопка") , и вы не предотвратили событие отправки по умолчанию.

Поэтому замените кнопку отправки обычной кнопкой. Для этого просто замените атрибут type значением " button ". И я не думаю, что есть атрибут с именем action для элемента input. Вы должны использовать атрибут onclick вместо действия для элемента ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...