2012-04-09 74 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