2016-05-02 9 views
0

チェックボックスをオンにしてデータを表示したいのですが、AJAX呼び出しをフェッチしたいのですが、データベースにすべてのデータが自動的に表示されますデータベースのフィールド値をcodeigniterに表示するにはチェックボックスをクリックします。

コントローラ(ちょうど私がAJAX呼び出しをしたい)私を助け

//This is my controller 
public function laptops() 
{ 
$this->load->model('feature_model'); 
$filter = array(
    'price' => $this->input->get('price'), 
    'name' =>$this->input->get('name') 
); 
$data['laptop'] = $this->feature_model->laptops_m($filter); 

//echo json_encode($this->feature_model->laptops_m($filter)); 
$this->load->view('feature/checkbox',$data); 
} 
//This is my model 
function laptops_m($filter = null){ 
    $this->db->select('*') 
      ->from('mobile_phones'); 
    // $query = $this->db->get('laptop_notebook')->result(); 
    // return $query; 
    if($filter['name']){ 
     $this->db->where('name', $filter['name']); 
    } 
    if($filter['price']){ 
     $this->db->where('price', $filter['price']); 
    } 
    $query = $this->db->get()->result(); 

    return $query; 

} 
//This is my view 
<input type="checkbox" name="name" value="acer"> 


<input type="checkbox" name="name" value="lenovo">  

<input type="checkbox" name="price" value="1000"> 



<table> 
     <tbody> 
     <?php foreach ($laptop as $laptops_all) { ?> 
      <tr> 

       <td><p>Laptop <?php echo $laptops_all->name ?> </p> 
       </td> 


      </tr> 
     <?php } ?> 
     </tbody> 
    </table> 

Ajaxのスクリプト:

// This is the ajax script function 
<script> 
$("input[checkbox]").change(function(){ 
       $.ajax({ 
      url: localhost/ci35/feature/laptops, 
      dataType: 'json', 
      success: function(data){ 
       $.each(data, function(index, element) { 
        $("tbody").empty(); 
        $("tbody").append("<tr><td>"+ 
        "Laptop "+element.brand+""+ 
        "</td></tr>"); 
       }); 
      } 
     }); 

答えて

0

あなたは、データがここGET配列から表示するために取得しよう:

$filter = array(
    'price' => $this->input->get('price'), 
    'name' =>$this->input->get('name') 
); 

しかし、あなたはあなたのjson要求に任意のデータを送信しないのため、あなたのGET配列は空です。

データ

タイプ:jQueryのドキュメントからPlainObjectまたは文字列または配列

データが サーバーに送信されます。まだ文字列でない場合は、クエリ文字列に変換されます。 GETリクエストのURLに追加されます。この自動処理を防ぐには、processDataオプションを にしてください。オブジェクトはキー/値のペアでなければなりません。 の値が配列の場合、jQueryは伝統的な設定(後述)の値に基づいて同じキー で複数の値をシリアル化します。

したがって、checkboxesのチェックを繰り返し、値を配列に追加する必要があります。次にdataプロパティを介してajaxリクエストのこの配列を送信します。あなたが成功AJAX呼び出し、ビューで再びのforeachを使用する必要はありませんを介してデータを印刷しているよう

+0

私はJS側でないPHP側の問題があると述べたように私は – purender

+0

AJAX呼び出しは私に誰 – purender

+0

を動作していない、既に私のconrtrollerで書かれ – purender

0

は、jqueryの中

$('.searchType').click(function() { 
    alert($(this).attr('id')); //-->this will alert id of checked checkbox. 
     if(this.checked){ 
     $.ajax({ 
      url: localhost/ci35/feature/laptops, 
      dataType: 'json', 
      success: function(data){ 
       $.each(data, function(index, element) { 
        $("tbody").empty(); 
        $("tbody").append("<tr><td>"+ 
        "Laptop "+element.brand+""+ 
        "</td></tr>"); 
       }); 
      } 
     }); 
    } 
    }); 

、HTMLのチェックボックス要素にthis..addクラス=「て、searchType」を試してみてください。

コントローラでも、jsonデータを印刷する必要があります。

public function laptops() 
    { 
    $this->load->model('feature_model'); 
    $filter = array(
     'price' => $this->input->get('price'), 
     'name' =>$this->input->get('name') 
    ); 
    $data['laptop'] = $this->feature_model->laptops_m($filter); 

    echo json_encode($data['laptop']); 
    // $this->load->view('feature/checkbox',$data); 
    } 
+0

コントローラ内の負荷ビューはどこですか? – purender

+0

は動作していません同じ出力チェックボックス – purender