2009-11-17 32 views
6

Seçme alanım var. Bir mysql tablosundan alınan seçeneklerle doldurmalıyım.
İştejQuery, jQuery ajax json, php'yi kullanarak seçin.

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

kod çalışıyor ... Ben şimdi CodeIgniter çerçeve

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

, jQuery çağrısı kullanarak yapmış bazı küçük php kodudur. Gönderiyi aradığımda, sonuç olarak categoryid'i alırım.
Şimdi, yukarıdaki kodunu değiştirmek gerekir, bu yüzden yapabilirsiniz:

  • kategori numarası gönderme ajax çağrısı. Bu
  • bu kategori için alt kategoriler olsun ve
  • dizi json_encode ve *
  • * sonuçları geri jQuery ajax arama, kod çözme binip < seçin> alanını inşa
yankı * dizi inşa yapılır

Dizi, kimliği ve adı olan bir alt diziye sahip her öğe ile oluşturulmalıdır, değil mi? Herhangi bir yardım için şimdiden çok teşekkürler Teşekkürler

cevap

29

Çok farklı değil.

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

ile:

$.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"); 
+0

Merhaba cletus. Mükemmel çalıştı. Bana bir şey döndüyse ne olur, söyler misin? (yani mysql boş döner) .. sonuçların boş olup olmadığını nasıl anlarım? teşekkürler – Enrique

+0

data.lenght 0 –

+1

olacak ya da "for" yerine: $ $ "$" (dosya, işlev (anahtar, değer) { sel.append ($ ("

7

Evet. Ad/değer çiftlerini içeren bir JSON kodlu nesne dizisini geri vermek istersiniz. Daha sonra bunları kullanarak yinelemeli olarak oluşturabilirsiniz.

$.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"); 
1

ayrıca sadece $ kullanabilirsiniz(). Load() ve PHP kodu var <option> etiketlerini

$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/"); 
+0

Harika bir ipucu/fikir ... Denerim! Teşekkürler Scott! – Enrique

+0

benim deneyimime göre, bu çözümün INT'de bir hatadan dolayı innerHTML kullanarak IE8 ve aşağıda çalışamayacağının farkında olmalısınız (http://webbugtrack.blogspot.it/2007/08/bug-274-dom-methods-on -select-lists.html) - ancak IE 9+ dahil olmak üzere diğer tarayıcılarda iyi çalışır – furins

1

aşağıdaki kodu deneyin üretir. Kontrolör olarak

--------- Görünümünde

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

     } 

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

Enjoy ---- bir seç Seçeneği Şimdi

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

komut dosyaları ekleme kod ....