2016-06-27 4 views
0

Ich habe ein Formular, das für die Live-Filterung von Daten verwendet wird, die in einer Ansicht geworfen wird. Ich habe gerade von serialize() gelernt, und so wie ich es verstehe, nimmt es alle Formdaten und wandelt sie in eine Zeichenkette um, die ich in das Datenfeld meiner ajax-Funktion eingeben kann.Erfassen von dynamischen POST-Daten aus AJAX in CodeIgniter

So ist meine Form, wie dies in Pseudo-Code ein:

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

Welche macht:

<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"> 

Derzeit mein Modell hat eine Funktion soll diese Daten nehmen und dynmically eine SQL bauen wie so Aussage:

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

ich bin nicht vertraut genug mit CI und pHP ajax zu erhalten Haken an meinen Controller, um die richtige Auswahlfunktion zu schreiben.

Da neue Datensätze in meiner Tabelle mit neuen eindeutigen Städtenamen hinzugefügt werden, werden mehr Eingaben gerendert. Kann ich serialize verwenden, um all das zusammenzufassen, um es an ajax weiterzuleiten, und wenn ja, wie benutze ich es in meinem CI-Modell, um die Daten dynamisch zu verwenden, um eine SQL-Anweisung mit einer Reihe von WHERE-Klauseln basierend auf jeder geprüften Stadt zu erstellen?

Ich habe auch andere Kategorie von Filtern wie Klasse, Typ, die in der gleichen SQL-Anweisung enthalten sein müssen.

Wenn das keinen Sinn ergibt, kann ich dies mit besseren Informationen aktualisieren.

Update: Ajax-Code

$("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

Wo ist Ihr AJAX-Code? –

+0

@Abdulla - in die Frage oben bearbeitet –

+0

was ist Fehler oder Ausgabe ?? –

Antwort

1

würde ich wahrscheinlich die Namen der Stadt Kontrollkästchen ändern die Daten als Array übergeben und die Stadt ID als Wert speichern:

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

HTML Ergebnis :

<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"> 

Und dann im Modell:

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

Grob und aus dem Gedächtnis - aber das sollte Sie ziemlich nah bekommen.