2013-09-28 10 views
6

Powiedzmy mam dane zwracane z warstwy usług backend:JQuery wypełnienie DropDownList z danymi JSON

[ „2”, „3”, „7”, „14”]

pierwsze pytanie. Czy jest to uważane za prawidłowe dane JSON? Json.org mówi, że jest, ale nie mogę znaleźć żadnych odniesień do niego w Google, SO, itd ...

Zamówiona lista wartości. W większości języków jest to realizowane jako tablica, wektor, lista lub sekwencja.

Chcę móc pobrać te wartości i dodać je do już istniejącego obiektu DropDownList OnLoad przy użyciu JQuery.

$.getJSON(“http://www.example.com/path-to-get-data”, function(data) { 
    //iterate through each object and add it to the list. 
    //ideally, the key and value (string to display to the end user) would be the same. 
}); 

I przyjrzał się this thread, ale ma obiektów, a nie tylko tablicę. Czy powinienem używać parseJSON versus getJSON?

Z góry dziękuję!

+0

Wierzę, że to nie jest ważne, ważne JSON będzie coś jak { "klucz«2», "klucz":«», "klucz 3":«7», "klucz": "14"} – Satya

+0

'$ .parseJSON ('[" 2 "," 3 "," 7 "," 14 "]') zwróci tablicę.Lepiej użyj getJSON i wykonaj iteracje po każdym elemencie tablicy i dodaj go do obiektu. – rzr

Odpowiedz

9
var arr = [ 2, 3, 7, 14]; 
$.each(arr, function(index, value) { 
    ('#myselect').append($('<option>').text(value).attr('value', index)); 
}); 

Proszę również spojrzeć na rozwiązania Mr. C za:

$('<option></option>').val(item).html(item) 

Jego sposób manipulowania option S jest dla mnie nowe i bardziej elegancki.

+0

Wrzucił "Object doesnot support .append" – Kurkula

+1

Jaka jest twoja wersja jQuery i jaka jest twoja przeglądarka? – Blaise

+0

tj. 11. krawędź jquery. – Kurkula

2

To nie jest prawidłowy JSON, to musi być ten styl:

{"0": "2", "1" : "3", "2" : "7", "3" : "14"} 

Można wykorzystać te próbki do procceed Ci odpowiedzi:

var response = "[2, 3, 7, 14]"; 
eval("var tmp = " + response); 
console.log(tmp); 
5

Moje rozwiązanie oparto off Blaise's pomysłu.

//populate the Drop Down List 
$.getJSON("http://www.example.com/api/service", function (data) { 
    $.each(data, function (index, item) { 
     $('#dropDownList').append(
       $('<option></option>').val(item).html(item) 
     ); 
    }); 
}); 
1

Jest to deklaracja HiddenField, która jest przydatna do przechowywania JSON String

<asp:HiddenField ID="hdnBankStatus" runat="server" /> 

Jest to deklaracja DropdownList

<select id="optStatus" name="optStatus" runat="server"> 
     </select> 

te linie będą zainicjować wartości Hiddenfield z listy posortowanej (Załóżmy, że lista zawiera pary wartości kluczy w posortowanej kolejności), która jest następnie serializowana przy użyciu serializatora JSON

sl = new SortedList(); 
    hdnBankStatus.Value = jsonSerialiser.Serialize(sl); 

Te linie będą używać elementów String JSON jeden po drugim i wypełniają listę wartościami.

$(document).ready(function() { 

    var myOptions = $.parseJSON($('#hdnBankStatus').val()); 
     var mySelect = $('#optStatus'); 
     $.each(myOptions, function (val, text) { 
      mySelect.append(
    $('<option></option>').val(text).html(val) 
     ); 
     }); 
    } 
-3

Dla mnie ten zadziałał.

$("#ddlCaseType").append("<option>" + txt + "</option>"); 
+0

$ ("# ddlCaseType"). Append (""); –

0
var arr = [ 2, 3, 7, 14]; 
var dropdown = ('#myselect'); 
dropdown.empty(); 
dropdown.append($('<option value=''>--Please Select--</option>')); 
$.each(arr, function(index, value) { 
dropdown.append($('<option value='+index+'>'+value+'</option>')); 
});` 
+0

To powinno wystarczyć –

Powiązane problemy