Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试让Jquery在Rails和Active Admin中使用动态选择表单_Javascript_Jquery_Ruby On Rails_Activeadmin - Fatal编程技术网

Javascript 尝试让Jquery在Rails和Active Admin中使用动态选择表单

Javascript 尝试让Jquery在Rails和Active Admin中使用动态选择表单,javascript,jquery,ruby-on-rails,activeadmin,Javascript,Jquery,Ruby On Rails,Activeadmin,我正在尝试根据另一个选择框更新选择框 在我的活动管理资源中,我仅为一些测试数据执行了以下操作: controller do def getcols list = new Hash list = {"OPTION1" => "OPTION1", "OPTION2" => "OPTION2"} list.to_json end end 在active_admin.js中,我有以下内容 $('#worksheet_type').change(functi

我正在尝试根据另一个选择框更新选择框

在我的活动管理资源中,我仅为一些测试数据执行了以下操作:

controller do

  def getcols
    list = new Hash
    list = {"OPTION1" => "OPTION1", "OPTION2" => "OPTION2"}
    list.to_json
  end
end
在active_admin.js中,我有以下内容

$('#worksheet_type').change(function() {

  $.post("/admin/getmanifestcols/", { ws_type: $(this).val() }, function(data) {
            populateDropdown($("#column_0"), data);
        });
});

function populateDropdown(select, data) {
 select.html('');
    alert('hi');
    $.each(data, function(id, option) {
       select.append($('<option></option>').val(option.value).html(option.name));
    });       
 }
$('#工作表_类型')。更改(函数(){
$.post(“/admin/getmanifestcols/”,{ws_type:$(this.val()}),函数(数据){
PopulatedDropdown($(“#列_0”),数据);
});
});
函数填充下拉列表(选择,数据){
select.html(“”);
警报(“hi”);
$.each(数据、函数(id、选项){
select.append($('').val(option.value).html(option.name));
});       
}
上面的工作原理是,当我的主选择框被更改时,jquery被调用,我甚至可以调用“hi”的警报框。但是,它不会用我的测试选项1和选项2数据替换选择框的内容

我想我传递的JSON是错误的或者其他什么,或者它没有被读取


我遗漏了什么?

在我看来,您似乎没有正确地在地图上迭代

那么:

$.each(data, function(value, name) {
   select.append($('<option></option>').val(value).html(name));
});
$。每个(数据、函数(值、名称){
select.append($('').val(value.html(name));
});

让controller渲染部分,然后PopulatedDropdown将附加返回html会更快,而不是让JS和浏览器内存完成所有工作。还可以使用PopulatedDropdown函数中的console.log(数据)读取浏览器控制台中返回的javascript对象。