2014-09-05 3 views
0

У меня есть этот код здесь, что делает вызов Ajax и помещает данные в раскрывающемся меню, но у меня есть два значения идентификатор и имя, как так (это из моего console.log):JQuery Ajax получить вызов и выпадающее меню

Name Gary 
Id 2 
Name Joe 
Id 7 
Name Kevin 
Id 5 
Name Paul 
Id 1 
Name Rocco 
Id 11 
Name Will 
Id 15 

Я пытаюсь поставить идентификатор в качестве значения и имя в качестве метки в моем раскрывающемся меню:

$.get("/api/name/getNames", function (data) { 
      var mySelect = $('#id'); 
      $.each(data, function() { 
       $.each(this, function (k, v) { 
        console.log(k + " " + v); 
        mySelect.append($('<option></option>').val(v).html(v)); 
       }); 
      }); 
     }); 

но в моем раскрывающемся списке он возвращает

Gary 
2 
Joe 
7 
Kevin 
5 
Paul 
1 
Rocco 
11 
Will 
15 

Как получить идентификатор как значение и имя в качестве метки для моего раскрывающегося списка?

и вот выпадающий в вопросе:

<label for="id">Name</label> 
        <select id="id" name="id" class="form-control"> 
         <option>-- Select Name --</option> 
        </select> 

ответ

0

Вы пробовали вносящее изменение в код, как это?

mySelect.append($('<option value="' + v + '">' + k + '</option>')); 

Вам не нужно, чтобы установить значение и метку с функциями, вы можете просто бросить их прямо в теге вы генерирующий.

Кроме того, возможно, что вы повторяете данные неправильно, но я не могу быть уверен, не видя, как вы возвращаетесь в качестве данных из вашего вызова $ .get.

+0

это не то, что я ищу, я m, чтобы иметь фактический номер id как значение и фактическое имя как метку опции. –

+0

Вот что я пытаюсь вас достать. Ты это пробовал? –

3

Нужна ли вторая петля .each? Если они являются объектами, вы могли бы сделать один .each петли следующим образом:

$.get("/api/name/getNames", function (data) { 
    var mySelect = $('#id'); 
    $.each(data, function (index, el) { 
     mySelect.append($('<option></option>').val(el.Id).html(el.Name)); 
    }); 
}); 
+0

Мне было интересно то же самое, но мы пока не знаем, как выглядят данные. –

+0

perfecto, спасибо кучу. –

0

На самом деле вам нужно прочитать каждую строку и следующую строку для получения его правильно

Вот правильная jsfiddle: http://jsfiddle.net/w57drLb6/

var mySelect = $('#id'); 
var lines = data.split("\n"); 

    for(var i=0; i<lines.length; i = i+2) 
    { 
     mySelect.append($('<option></option>').val(lines[i+1].replace('Id ', '')).html(lines[i].replace('Name ', ''))); 
    }  

Пожалуйста, отметьте, как ответ, если он отвечает ваш запрос

+0

Я предположил, что вы получили простой текст из ajax-звонка – masum7

Смежные вопросы