1

検索文字列を受け取り、それをphpファイルに送信してデータベース列を解析する検索機能があります。また、Web サイトのどの側面 (コミック、アートワーク、またはその両方) を検索するかをユーザーに選択してもらいたいと思います。コミックとアートワーク、または 2 つの別々のテーブルに保存されます。

これは、以下の html から入力検索文字列を受け取り、それを php ファイルに送信する関数です。

<script type="text/javascript">

        function search(searchString) {     
            //var site = $("#site").val();
            $.get("./scripts/search.php", {_input : searchString},
                function(returned_data) {
                    $("#output").html(returned_data);
                }
            );
        }

これは、「コミック」、「アートワーク」、または「すべて」を検索するための JavaScript です。

        function searchChoice(choice) {     
            alert("Choice: " + choice);
            $.get("./scripts/search.php", {_choice : choice}
           );
        }

</script>

HTML:

    <!--Search filtering for comics, artwork, or both-->
<span class="search"><b>Search for: </b> </span>

<div class="btn-group" data-toggle="buttons-radio">
<span class="search">
    <button type="button" class="btn" id="comics" onclick="searchChoice(this.id)">Comics</button> 
    <button type="button" class="btn" id="artwork" onclick="searchChoice(this.id)">Artwork</button> 
    <button type="button" class="btn" id="all" onclick="searchChoice(this.id)">All</button> 
</span>
</div>

<br/>
<br/>

<!--Search functionality-->
<span class="search">
    <input type="text" onkeyup="search(this.value)" name="input" value="" />
</span>

<br />
<span id="output"><span class="sidebarimages">  </span></span>

PHP の抜粋:

$input = (isset($_GET['_input']) ? ($_GET['_input']) : 0); 
$siteChoice = (isset($_GET['_choice']) ? ($_GET['_choice']) : "all");

コミック ボタンが選択されたときに "Choice: comics" を正しく警告する JavaScript を確認できますが、php 側でecho "</br>Choice: " . $siteChoice;は "all" がエコーされますが、これは正しくありません。

ここに画像の説明を入力

どんなアイデアでも大歓迎です!

4

3 に答える 3

2

@E_pで述べたように、それが問題です...別のオプションは、変数を作成してそこにデータを保存することです...これを試してください:htmlを変更する必要はありません

   var mySearchString = 0;
   var myChoice = 'all';


function search(searchString) {     
        mySearchString = searchString;
        GetSearch();
        }

function searchChoice(choice) {     
            myChoice = choice;
            GetSearch();
            }

function GetSearch(){

 $.get("./scripts/search.php", {_input : mySearchString, _choice : myChoice},
        function(returned_data) {
            $("#output").html(returned_data);
        }
    );

}
于 2012-11-23T22:45:58.093 に答える
1

_choiceの状態を保持しません。

検索が呼び出されても、サーバーには渡されません。

ボタンをオプションに変更し、検索機能で両方を渡す必要があります。同時にサーバーに

于 2012-11-23T22:38:22.250 に答える
1

ボタンをラジオ ボタンに置​​き換えて、form.Serialize() を使用します。

<form id="searchform">
    <input type="radio" name="_choice" value="comics" />Comics<br/>
    <input type="radio" name="_choice" value="artwork" />Artwork<br/>
    <input type="radio" name="_choice" value="all" />All<br/>


    <input type="text" onkeyup="search()" name="_input" value="" />
</form>

Javascript

  function search() {     
        //var site = $("#site").val();
        $.get("./scripts/search.php", $('#searchform').serialize(),
            function(returned_data) {
                $("#output").html(returned_data);
            }
        );
    }

この.serialize()関数はフォーム入力を JSON に変換するため、手動で入力する必要はありません。パラメータが不要になり、関数が 2 つもなく、1 つの関数ですべてを実行できます。

于 2012-11-23T22:50:50.017 に答える