在Dancer框架中使用ajax填充下拉列表
我正在使用Dancer模块获取以下数据:在Dancer框架中使用ajax填充下拉列表,ajax,json,dropdownlistfor,dancer,Ajax,Json,Dropdownlistfor,Dancer,我正在使用Dancer模块获取以下数据: any [ 'ajax', 'get' ] => '/textbook' => sub { set serializer => 'JSON'; @textbooks = [{id => '1', name => "text1"},{id => '1', name => "text1"}...]; return { 'text_list' => \@textbooks; }; 我的
any [ 'ajax', 'get' ] => '/textbook' => sub {
set serializer => 'JSON';
@textbooks = [{id => '1', name => "text1"},{id => '1', name => "text1"}...];
return { 'text_list' => \@textbooks;
};
我的tupbook.tt文件中有以下代码:
<select id="textbook">
<option value="">Please Select</option>
</select>
请选择
在js文件中
$(函数(){
$.ajax({
键入:“获取”,
网址:“/教科书”,
数据类型:“json”,
成功:功能(数据){
$.each(data.aaData,函数(i,数据)
{
警报(data.value+“:”+data.text);
var div_data=“”+data.text+”;
警报(分区数据);
$(div_数据)。附录(“#教科书”);
});
}
});
}))
但这不会在页面加载时自动加载条目。请帮忙我认为你的JS中有几个bug 错误1:首先,您不是指文本列表,而是指未知元素“aaData” 与此相反:
$.each(data.aaData,function(i,data)
success: function (data) {
...
$.each(data.text_list, function(i, data)
试试这个:
$.each(data.text_list, function(i, data)
var div_data="<option value="+data.id+">"+data.name+"</option>";
错误2:在迭代循环中,“data”是数组中的hashref。因此,“data.value”和“data.text”将不起作用。你应该使用'data.id'和'data.name',就像你在舞者代码中指定的那样
而不是:
var div_data="<option value="+data.value+">"+data.text+"</option>";
使用以下命令:
success: function (response) {
...
$.each(response.text_list, function(i, data)
同样,我会考虑把“数据”改成更可读的东西,比如“教科书”。
祝你好运,如果我的答案对你有用,别忘了“接受”
success: function (response) {
...
$.each(response.text_list, function(i, data)