在Dancer框架中使用ajax填充下拉列表

时间:2015-07-09 06:43:24

标签: ajax json dropdownlistfor dancer

我使用Dancer模块获取数据:

deleteWidget

我的textbook.tt文件中有以下代码:

any [ 'ajax', 'get' ] => '/textbook' => sub {
    set serializer => 'JSON';
    @textbooks = [{id => '1', name => "text1"},{id => '1', name => "text1"}...];
    return { 'text_list'  => \@textbooks;
};

和js文件

$(function(){

           <select id="textbook">
           <option value="">Please Select</option>
          </select>

});

但这不会在页面加载时自动加载条目。请帮忙

1 个答案:

答案 0 :(得分:1)

我认为你的JS中存在一些错误。

错误#1:首先,您没有引用text_list,而是指未知元素&#39; aaData&#39;。

而不是:

$.each(data.aaData,function(i,data)

试试这个:

$.each(data.text_list, function(i, data)

错误#2:在迭代循环中,&#39;数据&#39;是数组中的hashref。因此,&#39; data.value&#39;和&#39; data.text&#39;不管用。你应该使用&#39; data.id&#39;和您在Dancer代码中指定的&#39; data.name&#39;。

而不是:

var div_data="<option value="+data.value+">"+data.text+"</option>";

试试这个:

var div_data="<option value="+data.id+">"+data.name+"</option>";

最后,为了便于阅读,建议更改数据&#39;在你们每个人之外的其他事情。

而不是:

success: function (data) {
...
$.each(data.text_list, function(i, data)

使用此:

success: function (response) {
...
$.each(response.text_list, function(i, data)

同样,我会考虑更改数据&#39;一些更具可读性的东西,例如教科书&#39;。

祝你好运,不要忘记&#34;接受&#34;如果我的答案适合你。