0

私はhtmlでライブ検索に取り組んで
いますが、うまくいきましたが、小さな問題が発生しています.これが私のインデックスコードです:

<form id="quick-search" action="livesearch.php" method="GET" >
<p>
Search:
<input id="qsearch" type="text" name="qsearch" onkeyup="liveSearch()" />
<input type="submit" />
</p>
<div id="searchResults">

</div>
</form>

ここに私のjsコードがあります:

function liveSearch()
{
    var url = "livesearch.php";
    var s = document.getElementById('qsearch').value;
    http.open("POST", "livesearch.php?qsearch="+s, true);
    http.onreadystatechange = function() 
    {
        if(http.readyState == 4 && http.status == 200) 
        {
            document.getElementById('searchResults').innerHTML = 'Suggestions are as follow'+http.responseText; 
            //alert(http.responseText);
        } 
    }

    http.send();
}

結果は正しく取得していますが、完全な入力ボックスを空にすると、データベースから完全なリスト ボックスが取得されます。入力ボックスを空にすると、リスト ボックスをクリアしたい

4

1 に答える 1

0

PHP およびユーザー側でコードを保護する必要があります。これを行うには、ユーザーが送信した文字数を確認しますif(s.length < 2 )。AJAXリクエストを防ぐ

function liveSearch()
    {
    var url = "livesearch.php";
    var s = document.getElementById('qsearch').value;
    if(s.length < 2) return; // here You escape if there isn't enough letters to search
    http.open("POST", "livesearch.php?qsearch="+s, true);
    http.onreadystatechange = function() 
    {
        if(http.readyState == 4 && http.status == 200) 
        {
            document.getElementById('searchResults').innerHTML = 'Suggestions are as follow'+http.responseText; 
            //alert(http.responseText);
        } 
    }

    http.send();
}

ただし、PHP でも同様に保護することを忘れないでください。

if(count($_REQUEST['qsearch']) < 2) return false;
于 2013-01-11T08:22:55.297 に答える