这是我从ajax调用返回的数据(现在是EDIT:json格式):
[{"PROCEDURE_ID":362183,"PROCEDURE_NAME":"Biopsy, Breast; Lumpectomy"}, {"PROCEDURE_ID":558975,"PROCEDURE_NAME":"Biopsy, Cervix"},{"PROCEDURE_ID":558977,"PROCEDURE_NAME":"Biopsy, intrauterine"},{"PROCEDURE_ID":558976,"PROCEDURE_NAME":"Biopsy, Libial"}]
我试图将它放在一个选择下拉列表中,无论我做什么,它都会失败,select-options都是未定义的或jquery throw错误。
这是我到目前为止尝试过的2种不同的方法(selField是动态元素)
success: function(json){
if (json != '' )
var vx='<option value="">All</option>';
$.each (json.DATA, function(k, v){
vx+='<option value="'+k.Procedure_ID+'">'+v.Procedure_Name+'</option>';
});
$(selField).html(vx);
}
答案 0 :(得分:3)
我从您发布的代码中看到了一些错误。首先,正如Scott Stroz所提到的,您使用驼峰大小写在.each
循环中引用JSON数据,但JSON数据实际上在所有UPPER情况下都有它。 JavaScript区分大小写,因此需要匹配。其次,您在PROCEDURE_ID
循环中使用错误的参数引用.each
。函数的第一个参数(代码中为k
)是循环索引。第二个参数(代码中为v
)是元素数据。因此,您需要使用PROCEDURE_ID
参数来引用PROCEDURE_NAME
和v
,如下所示:
vx+='<option value="'+v.PROCEDURE_ID+'">'+v.PROCEDURE_NAME+'</option>';
从评论中看来,您还没有解析JSON响应。这将使.each
循环不再迭代。您可以使用JSON.parse()
或将AJAX调用的dataType
定义为'json'
assuming that it is properly formatted来执行此操作。
我创建了一个简单的jsFiddle来向您展示JSON对象的.each
迭代应该如何工作。