2017-03-14 7 views
0

AJAX 요청과 함께 select 옵션을로드하려고 시도합니다. AJAX 요청은 정확하고 내가 원하는 것을 반환합니다. 여기 내 코드는 다음과 같습니다.AJAX 추가 옵션이 유효하지 않습니다.

new Ajax.Request(url, { 
      method: 'post', 
      parameters: {foldertype_id: foldertype}, 
      onSuccess: function(answer) { 
       var folders = JSON.parse(answer.responseText).folders; 
       var selectToFill = $('my_select_box'); 
       for(var i = 0; i <= folders.length; i ++){ 
        selectToFill.append('<option id="' + folders[i].value + '" value="' + folders[i].ID + '">' + folders[i].label + '</option>'); 
       } 
      } 
     }); 

옵션이 잘 선택 항목에 추가되었지만 드롭 다운에 나타나지 않았습니다. Chrome에서는 옵션 텍스트에 색상 구문이 없음을 알 수 있습니다. 당신이 볼 수 있듯이 http://imgur.com/a/4NZB5

, 회색 옵션 사람들은 AJAX에 의해 추가되고, 난 내 선택 드롭 다운 이런 일이 왜

으로 그 하나를 볼 수 없습니다 :이 스크린 샷이 잘 이해를 참조하십시오? 사전

+0

을보십시오. 내가 말했듯이, 옵션이 잘 추가되었습니다. 활성화되지 않은 것처럼 – Nathan30

+0

아, 태그를 발견하지 못했습니다. – Roljhon

답변

1

에서

덕분에 여기에 대답을 얻었다 : https://arstechnica.com/civis/viewtopic.php?t=209624 일반적으로 DOM 삽입이 사용

.insert

예 : 위의 코드에서

new Ajax.Request(url, { 
     method: 'post', 
     parameters: {foldertype_id: foldertype}, 
     onSuccess: function(answer) { 
      var folders = JSON.parse(answer.responseText).folders; 
      var selectToFill = $('my_select_box'); 
      for(var i = 0; i <= folders.length; i ++){ 
       selectToFill[0].insert({after: '<option id="' + folders[i].value + '" value="' + folders[i].ID + '">' + folders[i].label + '</option>'}); 
      } 
     } 
}); 

, 당신은해야한다 select 요소 내부의 마지막 옵션을 가리키고 있습니다. 색인 0 또는 1

예 발췌문

const test = ["test1","test2"]; 
 

 
test.forEach(function(index,item){ 
 
\t const sel = $('my_select'); 
 
    sel[0].insert({after: "<option value='"+item+"'>"+item+"</option>"}); 
 
});
<script src="https://fastcdn.org/Prototype/1.7.3/prototype.js"></script> 
 
<select id="my_select" placeholder="test"> 
 
<option value="test">test</option> 
 
</select>

예를 들어, 이후에 추가하려고합니다 그게 도움이되기를 바랍니다.

+0

도움 주셔서 감사합니다. 몇 번 시도한 후에 나는 일하는 것을 만들었습니다. 유일한 문제는 삽입 후 아무 것도 할 수 없다는 것입니다. 심지어 console.log가 작동하지 않습니다. 나는 설명했다 : 내가 채운 형태에 대한 새로운 Chosen 요소를 만들고 싶지만, 나는 아무 것도 시도하지 않았다 :/ – Nathan30

+0

@ Nathan30 미안하지만 지금 당장 당신의 문제를 얻지 못했다. 더 자세히 설명해 주시겠습니까? 감사! 우리는 당신을 도우려고 노력할 것입니다. – Roljhon

1

이 프로토 타입을 사용하고이

var htmlToAppend =""; 

for(var i = 0; i <= folders.length; i ++){ 
htmlToAppend += "<option id='" + folders[i].value + "' value='" + folders[i].ID + "'>" + folders[i].label + "</option>"; 
} 
selectToFill.append(htmlToAppend); 
+0

마지막으로이 작업을 시도하고있다. selectToFill.insert (새 요소 ('option', {id : folders [i] .value, value : folders [i] .ID}). update (folders [i] .label)); – Nathan30

+0

위대한, 매일 새로운 것을 배우세요 :) – MattiasH