10 Stimmen

jQuery populate Elemente in einem Select mit jQuery ajax json, php

Ich habe ein Auswahlfeld. Ich muss es mit Optionen aus einer Mysql-Tabelle füllen.
Hier ist einige kleine PHP-Code habe ich mit Codeigniter Rahmen getan

$idcateg = trim($this->input->post('idcategory'));
$array1 = array(
    'result' => $idcateg
);
echo json_encode($array1);

Nun, der jQuery-Aufruf...

$.post("<?=base_url()?>index.php/rubro/list_ajax/", { 
    'idcategory' : idc },
    function(data){
        alert(data.result);
    }, "json");

Der Code funktioniert einwandfrei. Wenn ich den Beitrag aufrufe, erhalte ich die categoryid als Ergebnis.
Jetzt sollte ich den obigen Code ändern, damit ich das tun kann:

  • den Ajax-Aufruf, der die Kategorie-ID sendet, posten. das ist erledigt
  • Unterkategorien für diese Kategorie ermitteln und das Array erstellen *
  • json_encode das Array und echo *
  • Abrufen der Ergebnisse durch jQuery-Ajax-Aufruf, Dekodierung und Erstellung des < select >-Feldes *

Das Array sollte mit jedem Element mit einem Sub-Array mit id und Name gebaut werden, richtig? Vielen Dank im Voraus für jede Hilfe

38voto

cletus Punkte 596503

Es ist nicht viel anders.

$idcateg = trim($this->input->post('idcategory'));
$result = array();
$id = mysql_real_escape_string($idcateg);
$res = mysql_query("SELECT * FROM subcategories WHERE category = $id");
while ($row = mysql_fetch_array($res)) {
  $result[] = array(
    'id' => $row['subcatid'],
    'desc' => $row['description'],
  );
}
echo json_encode($result);

mit:

$.post("<?=base_url()?>index.php/rubro/list_ajax/", { 
  'idcategory' : idc },
  function(data) {
    var sel = $("#select");
    sel.empty();
    for (var i=0; i<data.length; i++) {
      sel.append('<option value="' + data[i].id + '">' + data[i].desc + '</option>');
    }
  }, "json");

8voto

tvanfosson Punkte 506878

Ja. Sie wollen ein JSON-kodiertes Array von Objekten mit Name/Wert-Paaren zurückgeben. Dann können Sie Ihre Auswahl iterativ mit diesen erstellen.

$.post("<?=base_url()?>index.php/rubro/list_ajax/",
    {'idcategory' : idc },
    function(data){
        var select = $('#selectName').empty();
        $.each(data.values, function(i,item) {
            select.append( '<option value="'
                                 + item.id
                                 + '">'
                                 + item.name
                                 + '</option>' ); 
        });
    }, "json");

1voto

Scott Evernden Punkte 37117

Sie könnten auch einfach $().load() verwenden und Ihren PHP-Code die <option> tags

  $return = "";
  while ($row = mysql_fetch_array($res)) {
    $value = $row['value'];
    $text = $row{'text'];
    $return .= "<option value='$value'>$text</option>\n";
  }
print $return;
}

...

$('#select').load("<?=base_url()?>index.php/rubro/list_ajax/");

1voto

Md. Nazrul Islam Punkte 2571

Versuchen Sie den folgenden Code.

Im Controller ---------

public function AjaxTest() {

            $rollNumber = $this->input->post('rollNumber');
            $query = "";

            if($rollNumber !="")
            {
               $query = $this->welcome_model->get_students();
            }
            else
            {
               $query = $this->welcome_model->get_students_informationByRoll($rollNumber);
            }

            $array = array($query);
            header('Content-Type: application/json', true);
            echo json_encode($array);

        }

In der Ansicht Option auswählen hinzufügen

<input type="text" id="txtSearchRoll" name="roll" value="" />
<input type="button" name="btnSubmit" value="Search Students" onclick="return CheckAjaxCall();"/>

     <select id="myStudents">
                <option>
                    --Select--
                </option>
            </select>

Jetzt Skripte ----

function CheckAjaxCall()
            {
                $.ajax({
                    type:'POST',
                    url:'<?php echo base_url(); ?>welcome/AjaxTest',                    
                    dataType:'json',
                    data:{rollNumber: $('#txtSearchRoll').val()},                    
                    cache:false,
                    success:function(aData){ 

                        $('#myStudents').get(0).options.length = 0;
                        $('#myStudents').get(0).options[0] = new Option("--Select--", "0");        

                        $.each(aData, function(i,item) {
                        $('#myStudents').get(0).options[$('#myStudents').get(0).options.length] = new Option(item[i].Name, item[i].roll);
                                                                                                            // Display      Value
                    });

                    },
                    error:function(){alert("Connection Is Not Available");}
                });

                return false;
            }

Viel Spaß mit dem Code....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X