Javascript 解码ajax响应下拉列表后出现的空下拉字段

Javascript 解码ajax响应下拉列表后出现的空下拉字段,javascript,json,forms,drop-down-menu,Javascript,Json,Forms,Drop Down Menu,在使用ajax调用web服务之后,我得到了这样一个json,我对json进行了解码,将每个值依次作为雇员和临时值发出警报,现在我想将这些值放入id为ultra的表单的下拉字段中,我得到 下拉列表+va的2个空字段;我解码的ues。我在items中的json响应是 ["Employee","Temporary"] my codd for ajax调用和解码结果,并提醒返回json中的每个元素 function ajax(){ var loc=document.getElementById('c

在使用ajax调用web服务之后,我得到了这样一个json,我对json进行了解码,将每个值依次作为雇员和临时值发出警报,现在我想将这些值放入id为ultra的表单的下拉字段中,我得到 下拉列表+va的2个空字段;我解码的ues。我在items中的json响应是

["Employee","Temporary"]
my codd for ajax调用和解码结果,并提醒返回json中的每个元素

function ajax(){
 var loc=document.getElementById('category_id1').value;
alert(loc);
var req;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
req=new XMLHttpRequest();
}
 else
 {// code for IE6, IE5
 req=new ActiveXObject("Microsoft.XMLHTTP"); 
}
req.open("POST", "ajax.php?&loc="+loc+"", true);
req.send();
var html
req.onreadystatechange=function(){
   if(req.readyState==4&&req.status==200){
       //$(".error").hide();
       result=req.responseText
       //alert(result);
       var items = JSON.parse(result);
       //alert(items.length)
       for(var i=0; i<items.length; i++)
        {
            var item = items[i];
            //alert(item);
            html=html+"<option value="+item+">"+item+"<option>"
        }

       }
       document.getElementById("Ultra").innerHTML=html
   }
 }
<form>
<label for="subcategory">Sub Category</label>
<select style="width:305px" name="subcategory" id="Ultra" onchange="run()"> 
<option value="">Select</option>
</select>
</form> 
在同一页上,后面的表单字段为 我这里没有空位我做错了什么
谢谢你

首先,你的模板unclosed标记出错了&我建议使用引号来定义select值。你正在使用

html=html+"<option value="+item+">"+item+"<option>"
而不是

html=html+"<option value='"+item+"'>"+item+"</option>"
我创建了简单的JSFIDLE,演示了它的工作原理:

对于那些感兴趣的人,也在此处添加代码:

HTML是相同的,JS是:

var items = [ "Employee", "Temporary" ];
var html = '<option value="">Select</option>';
for ( var i = 0; i < items.length; i++ ) {
    html += "<option value='" + items[ i ] + "'>" + items[ i ] + "</option>"
}

document.getElementById("Ultra").innerHTML = html;

标记javascript而不是php。使用代码缩进。您是否尝试在代码中插入“名称”而不是发出警告?不,我没有插入选项。让我试试。不走运,我遇到了一些错误。我已对代码进行了修改。有人能告诉我我做错了什么吗?您的代码末尾有太多的右括号。整理javascript并将其正确布局是值得的,因为它很难阅读。这将使你的生活在未来变得更加轻松。