2015-09-03 47 views
0

我想創建一個自動完成搜索框,其中查詢的結果取決於兩個輸入: 1.搜索框自身的值(通過用戶輸入) 2.選定的下拉列表中的值Codeigniter中的jQuery自動完成

您可以從下面的代碼中看到詳細信息。 我的問題在於自動完成功能的來源。我如何將參數追加到url?我試圖使用字符串連接,如

source: '<?php echo site_url("crowd/get_POIs?cat=");?>'+'some value'+'&q='+'some value' 

但它沒有工作。

HTML:

<select name="selCat"> 
    <option>....</option> 
</select> 

<input class="col-3" type="text" id="searchPOI" name="searchPOI" /> 

的Javascript:

$("#searchPOI").autocomplete({ 

    source: '<?php echo site_url("crowd/get_POIs");?>' 
    }); 

控制器

function get_POIs(){ 
      //alert($_GET['term']); 
      if (isset($_GET['cat']) && isset($_GET['q'])){; 
       $cat = strtolower($_GET['cat']); 
       $q = strtolower($_GET['q']); 
       $this->crowd->get_POIs($cat,$q); 
      } 
} 

型號

function get_POIs($cat, $q){ 
     $this->db->select('title, contentid'); 
     $this->db->from('attraction'); 
     $this->db->where('cat3 = "'.$cat.'"'); 
     $this->db->like('title', $q); 
     $query = $this->db->get(); 

     if($query->num_rows > 0){ 
      foreach ($query->result_array() as $row){ 
       $new_row['label']=htmlentities(stripslashes($row['title'])); 
       $new_row['value']=htmlentities(stripslashes($row['contentid'])); 
       $row_set[] = $new_row; //build an array 
      } 

      echo json_encode($row_set); //format the array into json data 
     } 
} 

回答

1

您可以可以通過使用AJAX

$("#searchPOI").autocomplete({ 
     source: function(request, response) { 
      $.ajax({url: <?php echo site_url("crowd/get_POIs") ?>, 
       data: {cat: "some value", q: "some value"}, 
       dataType: "json", 
       type: "GET", 
       success: function(data) { 
        response(data); 
       } 
      }); 
     } 
    }); 

您需要更正您的查詢,並從你的控制器返回數據

控制器

function get_POIs(){ 
      //alert($_GET['term']); 
      if (isset($_GET['cat']) && isset($_GET['q'])){; 
       $cat = strtolower($_GET['cat']); 
       $q = strtolower($_GET['q']); 
       $data=$this->crowd->get_POIs($cat,$q); 
       echo $data; 
      } 
} 

模型使用GET方法將參數

function get_POIs($cat, $q){ 
     $this->db->select('title, contentid'); 
     $this->db->from('attraction'); 
     $this->db->where('cat3',$cat); 
     $this->db->like('title', $q); 
     $query = $this->db->get(); 

     if($query->num_rows > 0){ 
      foreach ($query->result_array() as $row){ 
       $new_row['label']=htmlentities(stripslashes($row['title'])); 
       $new_row['value']=htmlentities(stripslashes($row['contentid'])); 
       $row_set[] = $new_row; //build an array 
      } 

      return json_encode($row_set); //format the array into json data 
     } 
} 
+0

如何測試它是否進入控制器?我試過你的建議,沒有錯誤,但沒有任何反應。我試圖在控制器中發出警告,但仍然沒有任何反應 –

+0

檢查您的瀏覽控制檯是否有錯誤! – Saty

+0

我已經檢查控制檯之前,我評論,它是,很明顯 –