2016-06-27 3 views
0

私は、ビューにスローされるデータのライブフィルタリングに使用されるフォームを持っています。私はちょうどserialize()のことを学びました。理解しているように、すべてのフォームデータを取り、それを文字列に変換して、私のajax関数のdata:フィールドに渡します。CodeIgniterのAJAXからの動的POSTデータのキャプチャ

だから私のフォームは擬似コードでこのように設定されています

レンダリング
<?php foreach (city that's returned from a distinct select statement): ?> 
    <?php echo form_checkbox('city-'.$i++, etc...) ?> 

<input type="checkbox" id="city-1" name="city-1" class="filter city-filter"> 
<input type="checkbox" id="city-2" name="city-2" class="filter city-filter"> 
<input type="checkbox" id="city-3" name="city-3" class="filter city-filter"> 

を現在の私のモデルは、このデータを取り、dynmically SQLを構築するために意図された機能を持っています次のように記述してください:

public function filter_assocaitions($cities, $class, $types) 
{ 
    $this-db->select()->from('Associations')->where('Deleted', 0); 

    if(isset($cities)) 
    { 
     $this->db->where('City', any of the city or cities that get passed from ajax); 
    } 
} 

私はCIとphpで十分に親しみが足りません。適切な選択機能を書くために私のコントローラに。

新しいレコードが別の都市名でテーブルに追加されると、より多くの入力がレンダリングされるためです。シリアライズを使用して、すべてをまとめてajaxに渡すことができますか?もしそうなら、私のCIモデルでデータを使用してチェックされた各都市に基づいてWHERE句を使ってSQL文を動的に構築します。

また、同じSQL文に含める必要があるクラス、タイプなどのフィルタのカテゴリもあります。

これが意味をなさないのであれば、これをより良い情報で更新することができます。

更新:Ajaxコード

$("input.filter").change(function(){ 
    var data = $("form#refine-associations").serialize(); 
    $.ajax({ 
     type: "post", 
     url: "<?php echo base_url('association/refine/'.$status) ?>", 
     cache: false, 
     data: data, 
     dataType: "json", 
     success: function(response){ 

     }, 
     error: function(){ 
      alert('Error while request..'); 
     } 
    }); 
}); 
+0

あなたのAJAXコードはどこですか? –

+0

@Abdulla - 上記の質問に編集 –

+0

エラーまたは出力は何ですか? –

答えて

1

私はおそらく配列としてデータを渡し、値として街のIDを保存するために市のチェックボックスの名前を変更します

<?php echo form_checkbox('cities[]',$i,etc...) ?> 

HTML結果を:

モデルで
<input type="checkbox" id="city-1" name="cities[]" value=1 class="filter city-filter"> 
<input type="checkbox" id="city-2" name="cities[]" value=2 class="filter city-filter"> 
<input type="checkbox" id="city-3" name="cities[]" value=3 class="filter city-filter"> 

そして:

foreach($cities as $city) 
{ 
    $this->db->or_where('City', $city); 
} 

ラフとメモリから - しかし、あなたはかなり近づくはずです。

関連する問題