JavaScript中的Ajax请求没有做任何事情

时间:2014-09-24 13:21:36

标签: javascript jquery ajax ruby-on-rails-4

以下代码给我带来了麻烦。它会被触发并在结束时返回正确的警报,但是ajax部分没有做任何事情。没有错误没有什么。

$(document).on('change', '.department_select', function () {
        var id = $(this).attr('id');
        var num = id.substring(33, 34);

        $.ajax({
            type: "GET",
            url: "<%= update_sub_deparments_path %>",
            data: {        
                department_id: $("#business_case_entries_attributes_0_department_id option:selected").val()       
            },
            dataType: "script",
        });

        alert(num); // Should alert the correct value (1, 3, 4 etc...)
});

我已经尝试过调试但是我只限于IE8的开发工具包,而控制台是空的。 rails日志也是空的,所以我真的不知道这里出了什么问题。

编辑:脚本应该通过调用更新路径来更新选择字段的选项。 EDIT2:我使用jquery gem jquery-rails.gem(3.1.0)。不安静确定这是哪个jquery verison!

EDIT3: 好的,可以添加更多细节:

//routes
'/:improvement_id/business_case/update_sub_departments(.:format)', :to => 'business_cases#update_sub_departments', :as => 'update_sub_departments'

//update_sub_departments.js.erb
$('#business_case_entries_attributes_0_sub_department_id').html("<%= escape_javascript(options_for_select(@sub_departments.collect { |sub_department| [sub_department.name.titleize, sub_department.id] })) %>");

//business_cases_controller.rb
  def update_sub_departments     
    @sub_departments = SubDepartment.where("department_id = ?", params[:department_id])      
    respond_to do |format|       
        format.js.erb     
    end  

结束

任何人都知道该怎么做?

问候。

修改

好的,我简化了我的问题!

如何将咖啡脚本的这一部分更改为普通的javascript?

$.ajax 'update_sub_departments',       
    type: 'GET'      
    dataType: 'script'      
    data: {         
        department_id: $("#business_case_entries_attributes_0_department_id option:selected").val()         
    }

2 个答案:

答案 0 :(得分:1)

可能需要添加成功部分

  $(document).on('change', '.department_select', function () {
    var id = $(this).attr('id');
    var num = id.substring(33, 34);

    $.ajax({
        type: "GET",
        url: "<%= update_sub_deparments_path %>",
        data: {        
            department_id: $("#business_case_entries_attributes_0_department_id option:selected").val()       
        },
        dataType: "script",
        success: function (data) {
           //Here
           alert(num); // Should alert the correct value (1, 3, 4 etc...)
        }
    });
  });

答案 1 :(得分:0)

必须像这样更改脚本:

$(document).on('change', '.department_select', function () {
        var id = $(this).attr('id');
        var num = id.substring(33, 34);

        $.ajax('update_sub_departments', {
            type: "GET",
            dataType: "script",
            data: {        
                department_id: $("#business_case_entries_attributes_0_department_id option:selected").val()       
            }

        });

        alert(num) // Should alert the correct value (1, 3, 4 etc...)
});