2012-02-14 3 views
0

jquery .html()을 사용하여 REST URL을 호출하여 일부 태그를 동적으로 추가했지만 작동하지 않습니다.jquery .html() doesnt work

<div style="display: none;" id="tables"> 
    <form:select id="table" name="table" path="table">  
     <form:option value="">Choose</form:option> 
     <div id="tables-select"> 
     <!-- The available tables for update will be added here --> 
     </div> 
    </form:select> 
    <script type="text/javascript"> 
     function getTables(type) { 
      $.getJSON('/web/tables/db/' + type, 
      { 
       ajax : 'true' 
      },function(data) { 
      html =''; 
      var len = data.length; 
      for (var i=0; i<len; i++) { 
       html += '<option value="'+data[i]+'" >'+data[i]+'</option>'; 
      } 
      $('#tables-select').html(html); 
      }); 
     } 
    </script> 
</div> 

REST 통화가 진행되고 있지만 아무 것도 일어나지 않습니다. 디버깅을하고 중단 점을 배치 한 후 Java 스크립트가 줄 10에서 Java 스크립트 함수의 끝으로 직접 이동한다는 것을 알 수 있습니다 (줄 20).

어떤 아이디어가 있습니까? 내 페이지에는 동일한 종류의 기능이 있으며 모든 작업에는이 기능이 필요합니다.

편집 : getTables()에 대한 누락 가까운 중괄호가있다 :

이 나는 ​​기능

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#type").live('change', function(){ 
      var type = $(this).val(); 
      getSites(type); 
      getTabless(type); 
     }); 
    }); 
</script> 
+4

가독성을 높이기 위해 코드를 들여 씁니다. 고맙습니다. –

+0

코드에 줄 번호를 포함하지 마십시오. 서식이 엉망입니다. –

+1

15 번째 줄에 중단 점을 놓으십시오. AJAX 호출이 올바르게 작동하지 않습니다. – arb

답변

1

약자로,이 코드가 잘못을 부르고 방법이다. 또한 실제로 어떤 코드가 있다고 가정합니다. getTables()입니다. 그렇지 않으면이 코드는 함수를 선언하는 것 외에는 아무 것도하지 않습니다.

디버깅 할 때 $.getJSON 호출이 실제로 빠르게 실행됩니다. AJAX의 모든 목적은 비동기식입니다. 콜백은 나중에 호출되기 때문에 디버거는 콜백을 입력하지 않고 $.getJSON 호출을 단계적으로 수행합니다. 콜백 내부에 중단 점을 넣으면 트리거되어야합니다.

이 전체 <DIV>의 스타일은 display:none입니다. $('#tables').show()을 호출하거나 보이지 않게하기 위해 뭔가를하고있는 경우를 제외하고는 DOM을 제외하고는 또는 방화범 소리 같은 도구를 통해 결과를 볼 수 없습니다.

<SELECT> 태그 안에 <DIV> 태그를 넣을 수도 없습니다. tables-select 요소에 <OPTGROUP> 태그를 사용하거나 초기 "선택"옵션을 포함하여 <SELECT> 요소의 전체 내용을 바꿉니다.

+0

예, getTables()를 호출하는 페이지 상단에 함수가 있습니다. REST 호출이 정상적으로 진행되고 브라우저에서 결과를 볼 때 디버거가 함수의 마지막 줄로 건너 뜁니다. 누락 된 중괄호는 오타입니다. – tazo

+0

콜백이 비동기이기 때문에 ** 디버거 **는 ** 함수의 마지막 줄로 건너 뜁니다. –

+0

ajax를 true로 설정하면 동기 호출이 실행됩니까? – tazo