1

我有一个搜索功能,它将接受搜索字符串并将其发送到 php 文件以解析数据库列。我还希望用户选择他们想要搜索的网站的哪个方面(漫画、艺术品或两者兼而有之)。漫画和艺术品或存储在两个单独的表中。

这是一个函数,它将接受来自下面 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");

You can see the javascript correctly alerting out "Choice: comics" when comics button is selected, but the php side, echo "</br>Choice: " . $siteChoice;, is echo'ing out "all", which is incorrect.

在此处输入图像描述

任何想法将不胜感激!

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,因此您不必手动输入,没有更多参数,也没有两个函数,只需一个即可完成所有任务

于 2012-11-23T22:50:50.017 回答