0

最初に 2 つの項目があります。ユーザーがオプションを選択すると、JavaScript コードがトリガーされ、同じページに結果が表示されるドロップダウン ボックスです。

2 つ目は入力ボックスと検索ボタンです。ユーザーが何かを入力して検索ボタンをクリックすると、javascript がトリガーされますが、何らかの理由で、他のページにリダイレクトするのではなく、現在のページ アドレスに値が追加され、xmlhttp.status が返されます。 0.

class/myresults.php にリダイレクトするのではなく、item1 とその値を現在のページ アドレスである www.myexample.com/index.php?item1=computer に追加します。

うまくいかない私のフォーム

<form action="">
               <input name="search" type="text" title="Search"/>
               <input type="submit" value="search" onclick="finditem(this.form.search.value)"/>
</form>


function finditem(option){
    alert(option); <<<<shows the correct entered value
     if (window.XMLHttpRequest)
        {
            xmlhttp=new XMLHttpRequest();
        }
        else
        {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            alert(xmlhttp.status);  << returns 0
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("Result").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","class/myresults.php?item1="+option,true);
        xmlhttp.send();
    }

機能するドロップダウン ボックスの Java スクリプト

<select name="items" onchange="findbox(this.value)">
   .....
  </select>

 function findbox(option){
             if (window.XMLHttpRequest)
                {
                    xmlhttp=new XMLHttpRequest();
                }
                else
                {
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange=function()
                {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                        document.getElementById("Result").innerHTML=xmlhttp.responseText;
                    }
                }
                xmlhttp.open("GET","class/myresults.php?item2="+option,true);
                xmlhttp.send();

            }
4

1 に答える 1

2

フォームが送信されます。つまり、ブラウザはページを見つけたのと同じ場所にデータを送信します。あなたはそれを望んでいないようです。したがって、フォームの送信を防止する必要があります。onclickこれを実現するには、ボタンのイベントではなくonsubmit、フォームのイベントをリッスンする必要があります。

<form action="" onsubmit="return finditem(this.search.value)">
               <input name="search" type="text" title="Search"/>
               <input type="submit" value="search"/>
</form>

JavaScript は次のとおりです: (finditemフォームが実際に送信されないように false を返すことに注意してください。)

function finditem(option){
     if (window.XMLHttpRequest)
        {
            xmlhttp=new XMLHttpRequest();
        }
        else
        {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("Result").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","class/myresults.php?item1="+option,true);
        xmlhttp.send();

        return false;
    }
于 2013-06-12T23:22:33.803 に答える