2012-11-23 18 views
1

我有一個搜索功能,將接受一個搜索字符串,並將其發送到一個PHP文件來解析數據庫列。我還希望用戶選擇他們想要搜索的網站的哪個方面(漫畫,藝術作品或兩者)。漫畫和藝術品或存儲在兩個單獨的表格。jquery沒有發送按鈕選項到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"); 

您可以看到的JavaScript正確報警了:選中漫畫按鈕時 「選擇漫畫」,但在PHP方面,echo "</br>Choice: " . $siteChoice;,呼應「全部」,這是不正確的。

enter image description here

任何想法,將不勝感激!

回答

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); 
     } 
    ); 

} 
+0

謝謝夥伴。但是這不起作用 – Growler

+0

@Growler,你也需要改變你的php代碼。更新 – Mate

+0

我改變了它 - 仍然沒有工作。你能解釋爲什麼我需要改變這樣的PHP代碼嗎?謝謝! – Growler

1

您不保留_choice的狀態。

當調用搜索時,它不會將它傳遞給服務器。

您需要將按鈕更改爲選項,並在搜索功能中同時通過。到一個服務器在同一時間

+0

您是什麼意思「將按鈕更改爲選項」? – Growler

+0

而不是

+0

http://www.w3schools.com/html/html_forms.asp(Radio Buttons)或http://www.w3schools.com/tags/tag_option.asp –

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,因此您不必手動輸入,不需要其他參數,也不需要兩個函數,只需一個即可完成全部工作

+0

這沒有工作:( – Growler

+0

你需要檢查'isset'如果它的計算結果爲true,我懷疑$ _GET沒有被填充。'print_r($ _ GET)' – codingbiz

+0

我的貢獻是:你不應該發送值到函數search()。這沒有參數:) – Mate