2011-08-17 6 views
3

다음과 같은 문제가 있습니다. 드롭 다운에서 요소를 선택하면 아약스를 통해 다른 드롭 다운을 자동으로 채 웁니다. 하위 카테고리 (sub_type)가 "유형"을 선택한 후에로드되지 않는다는 아이디어가 있습니다. isn`t로드드롭 다운 아약스 채우기

[{id: 0, name: 'Mark'}, {id:1, name: 'Andy'}, {id:2, name: 'Richard'}] 

그러나 subcathegory는 (선택 secont) :

HTML 
<select id="type" name="type"> 
<option value="1">General</option> 
<option value="2">Test</option> 
</select> 
<select id="sub_type" name="sub_type"> 
</select> 


SCRIPT 
    $("#type").change(function(){ 
    $.getJSON("ajax/add_subcathegory.php",{id: $(this).val(), ajax: 'true'}, function(j){ 
      var options = ''; 
      for (var i = 0; i < j.length; i++) { 
      options += '<option value="' + j[i].id+ '">' + j[i].name+ '</option>'; 
      } 
     }); 
    $("#sub_type").html(options); 
    }); 

내 아약스 스크립트를 반환합니다.

+0

어떤 문제가 있는지 명확하지 않습니다. 질문을 다시 말해 주시겠습니까? –

+0

편집 내 진술 –

답변

13

아약스 성공 기능이 참이라고 가정하면,에 기능 코드 변경 :

  var $subType = $("#sub_type"); 
      $subType.empty(); 
      $.each(j, function() { 
      $subType.append($('<option></option>').attr("value", this.id).text(this.name)); 
      }); 

귀하의 주요 문제를 현재 :

  • html 함수는 한 번만 호출됩니다.이 함수는 성공 함수 외부에 있기 때문에 한 번만 호출됩니다.

    은 JSON이 유효 반환 아약스 데이터

  • 요소는 키 ID이름하지 optionValue를 및 업데이트

optionDisplay 있습니다. 문자열은 작은 따옴표가 아닌 큰 따옴표로 인용되어야합니다. 따라서 getJSON() 호출이 자동으로 실패합니다.

+0

다음과 같이 맞습니까? ajax ("ajax/add_subcathegory.php", {id : $ (this) .val(), ajax : 'true) '}, 함수 (j) { \t \t VAR을 $ 아형 = $ ("#의 sub_type"); $ .each (j, 함수() {$ subType.append ($ (' ') .attr ("value", this.id). 텍스트 (this.name)); }); }); }); –

+0

"작동하지 않는다"고 말하면 아무 일도 일어나지 않는다는 것을 의미합니다. 우리가 더 잘 당신을 도울 수 있도록 실패한 부분을 디버깅 해보십시오. Javascript 오류가 발생하는지 확인하려면 Firefox의 Javascript 콘솔 (또는 브라우저의 해당 콘솔)을보십시오. 그렇지 않다면 Firebug, Fiddler 또는 이와 유사한 도구를 사용하여 네트워크 요청 및 Ajax 요청 및 Ajax 응답을 보여줍니다. Firebug를 사용하면 성공 함수에 중단 점을 설정하여 호출되는지 여부를 확인할 수도 있습니다. – Codo

+0

아약스 응답을 볼 수 있도록 크롬을 사용하고 있으며 수정 된 스크립트를 실행할 때 오류가 없습니다. –

2

ajax JSON 호출 바로 다음에 #sub_type에 html을 할당한다는 것은 문제입니다. 당신은이 같은 아약스 콜백 함수에 할당해야합니다

$("#type").change(function(){ 
    $.getJSON("ajax/add_subcathegory.php",{id: $(this).val(), ajax: 'true'}, function(j){ 
    var options = ''; 
    for (var i = 0; i < j.length; i++) { 
     options += '<option value="' + j[i].id + '">' + j[i].name + '</option>'; 
    } 
    $("#sub_type").html(options); 
    });  
}); 
+0

중 하나가 작동하지 않습니다 : |. 아약스 응답의 공백은 계산됩니까? –

+0

#sub_type이 보이십니까? $ ('# sub_type')을 호출 해보세요. html (''); ajax 콜백 외부에서 작동하는지 (심지어 onchange 함수 외부에서도) 볼 수 있습니다. –

+0

감사합니다. 문제는 –

관련 문제