2011-11-01 61 views
1

我在填充一些JSON数据的dropdownlist时遇到了一些麻烦,我怀疑是因为在#stuff div内追加了$ .post,但是我已经尝试了几种方法,并且不会去理解它。使用2个视图/文档填充JSON数据的下拉列表

该选择ID =“”标记&该div位于另一个视图(它不是这个特定文档的一部分),这是一个用这种方式填充下拉列表的问题?

我试图警告“listItems”,我有选项值等等......不明白为什么它不会填充。

任何帮助,将不胜感激。从$。员额

JSON-响应=

{"childrendata":[{"id":"42","parent":"1","fName":"hej","lName":"nisse","birthdate":"2011-10-21"}]} 

jQuery的/ JS:

$("#stuff").append(function(){ 


       $.post("show_relations", {}, 
          function(data) 
          { 
          $("#stuff").empty(); 

          json = eval('('+data+')'); 

           if(data == '{"childrendata":[]}') 
           { 
            $("#stuff").append("No relations registered."); 
           } 
           else 
           { 
            var listItems= ""; 

             for (var i = 0; i < json.childrendata.length; i++) 
             { 
             listItems+= "<option value='" + json.childrendata[i].fName + "'>" + json.childrendata[i].lName + "</option>"; 
             } 

            $("#child_list").html(listItems); 
           } 
          }); 
      }); 
    }); 

回答

0

编辑:基于您的评论,我会认为你的问题是纯粹的单页。

该代码的问题似乎是,你试图使用.append()与一个函数(这是有效的jQuery),但该函数不会返回任何jQuery可以附加到'东西'节点; $.post发出一个Ajax调用,它立即返回。

相反,你可以试试下面的(修改URL的Ajax调用在需要时):

$.post("url/to/post/to", {}, 
    function(data) { 
     $("#stuff").empty(); //Clear your stuff div 

     var children = data.childrendata; //jQuery automatically unserializes json 

     if(children.length == 0) { 
      $("#stuff").append("No relations registered."); 
     } 
     else { 
      $('#stuff').append('<select id="child_list"></select>'); 
      $.each(children, 
       function(index, value) { 
        //Append each option to the selectbox 
        $("#child_list").append("<option value='" + value.fName + "'>" + value.lName + "</option>"); 
       } 
      ); 
     } 
    }, 
    'json' 
); 

$。每个()是通用的jQuery迭代器,这有助于去杂乱的代码。

这是做什么是一个Ajax张贴到提供的URL,它与序列化的json对象响应。回调接受这个响应(jQuery已经自己解序),给'#stuff'div添加一个新的选择,然后将动态创建的选项添加到新的选择。

Endnote:我很抱歉没有发布到$ .each文档的链接,StackOverflow只允许我当前在一篇文章中发布2个超链接。

+1

它们在技术上是相同的文档,因为它们是一起生成的,所以文档的顶部与中间内容和底部页脚视图一起被混合。 – JazzCat

+0

太好了,之前已经用$ .getJSON对它进行了整理,但是需要忽略我的代码,并且可能会使用它,它的很多整洁:) thx一堆! – JazzCat