2012-05-14 4 views
0

У меня есть страница, и когда эта страница открыта, я хочу перейти в базу данных, получить некоторые данные и поместить эти данные в два тега select. Я создал его, и все работает хорошо, но я не могу добавить возвращаемые данные в теги select.jQuery set value select tag

HTML код

<li> 
     <label>Related Concepts</label> 
     <p> 
      <label>Source</label> 
      <select name="source[]"> 
       <option>select source</option> 
      </select> 
     </p> 
     <p> 
      <label>Destination</label> 
      <select name="destination[]"> 
       <option>select destination</option> 
      </select> 
     </p> 
    </li> 

JQuery код

$('#addRelation').ready(function(){ 
    $.getJSON("http://localhost/Mar7ba/Ontology/getAllConcepts/TRUE",function(data){ 
     var source = document.getElementsByName('source'); 
     var des = document.getElementsByName('destination'); 

     for(var i=0;i<data.length;i++){ 
      source.innerHTML+="<option>"+data[i]+"</option>"; 
      des.innerHTML+="<option>"+data[i]+"</option>"; 
     } 
    }); 
}); 

ответ

3

Если бы я тебя, Я внес бы следующие изменения:

HTML

<li> 
     <label>Related Concepts</label> 
     <p> 
      <label>Source</label> 
      <select name="source[]" id="source"> 
       <option>select source</option> 
      </select> 
     </p> 
     <p> 
      <label>Destination</label> 
      <select name="destination[]" id="destination"> 
       <option>select destination</option> 
      </select> 
     </p> 
    </li> 

Javascript

$('#addRelation').ready(function(){ 
    $.getJSON("http://localhost/Mar7ba/Ontology/getAllConcepts/TRUE",function(data){ 
     var source = $('select#source'); 
     var des = $('select#destination'); 
     var options = ''; 

     for(var i=0;i<data.length;i++){ 
      options += "<option>"+data[i]+"</option>"; 
     } 

     source.html(options); 
     des.html(options); 
    }); 
}); 

Поскольку вы уже используете JQuery, вы можете leverate его йот манипуляции. Кроме того, вы можете ускорить селектор, используя идентификатор, а не имя.

также убедитесь, что вы правильно обращаетесь к объекту данных.

+0

я могу 't использовать ID для тегов выбора, потому что у меня будет много тегов-элементов на моей странице, и они создаются автоматически, поэтому я делаю там имя как источник [], поэтому я могу получить его значения после отправки –

+0

, я попробую ваш код, спасибо –

+0

Единственное, что меня беспокоит о вашей разметке разметки, это то, что я не уверен, что должно быть официальным поведением (и требованием выбора), когда ваше имя имеет скользящие скобки: source [] – Kristian

1

, если это не объект, вы, вероятно, переписав значение на каждой итерации:

var elems = $('[name="source"], [name="destination"]'); 

elems.empty(); 
$.each(data, function(index, item) { 
    elems.prepend("<option>"+item+"</option>"); 
}); 
+0

I бдительные данные [0], и это работает –

+0

I бдительные данных [0] и печатает c1, то бдительные данные [1], и печатает c2 –

1

Перепишите вашу итерацию, как показано ниже,

$('#addRelation').ready(function(){ 
    $.getJSON("http://localhost/Mar7ba/Ontology/getAllConcepts/TRUE",function(data){ 
     var $source = $('select[name=source]'); 
     var $des = $('select[name=destination]'); 

     var options = []; 
     for(var i=0;i<data.length;i++){ 
      options.push("<option>"+data[i]+"</option>"); 
     } 

     var optionStr = options.join(''); 
     $source.html(optionStr); 
     $des.html(optionStr); 
    }); 
}); 
+0

Я пробовал ваш код и все тот же, –

+0

@WilliamKinaan Попробуйте сделать 'console.log (data [i]) 'или' alert (data [i]); 'и дайте нам знать, что вы видите. –

+0

У меня c1, c2, это означает, что он работает, но почему не работает с выбором? –