2009-11-17 3 views
6

선택 필드가 있습니다. mysql 테이블에서 가져온 옵션을 채워야한다.
여기jQuery 항목을 a로 채우기 jQuery를 사용하여 선택 ajax json, ph

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

코드는 잘 작동 ... 내가 지금 CodeIgniter의 프레임 워크

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

, JQuery와 호출을 사용하여 수행 한 몇 가지 작은 PHP 코드입니다. 게시물을 호출하면 결과적으로 categoryid가 표시됩니다.
지금, 나는 위의 코드를 수정해야합니다, 그래서 내가 할 수있는 :

  • 는 범주 ID를 전송 아약스 호출을 게시 할 수 있습니다. 이것은
  • 이 범주에 대한 하위 범주를 얻고,
  • 가 배열로 json_encode 및 *
  • *이 결과를 다시 jQuery를 아약스 호출, 디코딩에서 얻고 < 선택> 입력란을 구성
에코 * 배열을 구축 완료

배열은 id와 name이있는 하위 배열을 갖는 각 요소로 구축해야합니다. 맞습니까? 도움을 주셔서 감사합니다.

답변

29

별로 다르지 않습니다.

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

과 :

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

안녕하세요. 완벽하게 일했습니다. 아무것도 반환되지 않으면 지금 내게 말할 수 있습니까? (즉, mysql이 반환 함) .. 결과가 비어 있는지 어떻게 알 수 있습니까? ('$의 .each (데이터, 기능 (키, 발) { sel.append ($ ("

+0

data.lenght 대신'for'의, 수, 0 –

+1

일 또는 것 data [key] .id) .text (data [key].desc)); }}); – slinstj

7

예. 이름/값 쌍을 포함하는 객체의 JSON 인코딩 배열을 다시 전달하려고합니다. 그런 다음이를 사용하여 반복적으로 선택할 수 있습니다.

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

당신은 또한 단지 $를 사용할 수있다(). 부하()와 PHP 코드가이 <option> 태그

$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

굉장 팁/아이디어 ... 그것을 시도합니다 !! 감사합니다 스콧 !! – Enrique

+0

내 경험에 따르면 innerHTML (http://webbugtrack.blogspot.it/2007/08/bug-274-dom-methods-on)을 사용하는 DOM 조작의 버그로 인해이 솔루션이 IE8 이하에서 작동하지 않을 수 있음을 알고 있어야합니다. -select-lists.html) - IE 9 이상을 포함한 다른 브라우저에서도 잘 작동합니다. – furins

1

는 다음과 같은 코드를 시도를 생성합니다. 컨트롤러에서

---------보기에서

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

즐길 ---- 셀렉트 옵션 이제

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

스크립트를 추가 코드 ....