转换json数据以选择下拉选项

时间:2014-04-17 13:35:11

标签: jquery json coldfusion

这是我从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);
               }

1 个答案:

答案 0 :(得分:3)

我从您发布的代码中看到了一些错误。首先,正如Scott Stroz所提到的,您使用驼峰大小写在.each循环中引用JSON数据,但JSON数据实际上在所有UPPER情况下都有它。 JavaScript区分大小写,因此需要匹配。其次,您在PROCEDURE_ID循环中使用错误的参数引用.each。函数的第一个参数(代码中为k)是循环索引。第二个参数(代码中为v)是元素数据。因此,您需要使用PROCEDURE_ID参数来引用PROCEDURE_NAMEv,如下所示:

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迭代应该如何工作。