2012-04-09 67 views
2

我正在使用jsp創建一個用戶註冊表單,其中有一個選項可以從組合框中選擇狀態。我正在使用一個簡單的html組合框,但我正在接收狀態爲一個來自web服務的json對象。如何使用json對象填充組合框。如何使用JSON對象填充HTML組合框

國家JSON是如下,

{"States":[{"id":"1","stateName":"Alabama","code":"AL"}, 
{"id":"4","stateName":"Arkansas","code":"AR"}, 
{"id":"8","stateName":"Delaware","code":"DE"}]} 

我的JavaScript功能,

function getStates(){  
url = WSPath; 
response=initiateRequest(url);} 

我的HTML組合框是<select name="State">

我需要填充組合框與上述json對象。

+0

組合框是一個下拉菜單和文本輸入(因此名稱)的組合。 select元素不會生成一個。 – Quentin 2012-04-09 12:25:49

+1

不要用JavaScript做這件事,它效率低下,並且比普通(在客戶端)HTML的可靠性低。用JSP來做,並緩存結果。 – Quentin 2012-04-09 12:28:21

回答

4

純JS:

var select = document.createElement("select"); 
var obj = JSON.parse(response); 

for (var i=0; i < obj.States.length; i++) 
{ 
    var option = document.createElement("option"); 
    option.id = obj.States[i].id; 
    option.value = obj.States[i].code; 
    option.innerHTML = obj.States[i].stateName; 
    select.appendChild(option); 
} 

扭捏的ID,價值和innerHTML來您的需求。

+0

嗨,謝謝你的答覆。我沒有嘗試,因爲你提到,但我收到錯誤在var obj = JSON.parse(response); – user1321824 2012-04-09 13:12:11

+1

什麼是錯誤?我不知道你是如何閱讀json的。我假設該響應包含json字符串。如果它已經被解析,那麼你不需要對JSON.parse進行調用。 – mihai 2012-04-09 13:18:15

+0

「狀態」是無用的,你需要內部有對象的數組。 – 2014-02-20 08:04:16