【问题标题】:Passing string in ajax在ajax中传递字符串
【发布时间】:2016-02-21 17:16:42
【问题描述】:

我有这个用于动态选择框的咖啡脚本函数,我需要将“modelsSelect”内容传递给这个其他脚本,但我就是无法让它工作。

diys.coffee

dynamicSelect = (makesSelect, modelsSelect) ->
  $(document).on 'change', makesSelect, (evt) ->
    $.ajax 'update_make_models',
      type: 'GET'
      dataType: 'script'
      data: {
        make_id: $("#{makesSelect} option:selected").val(),
        'models': modelsSelect
      }
      error: (jqXHR, textStatus, errorThrown) ->
        console.log("AJAX Error: #{textStatus}")
      success: (data, textStatus, jqXHR) ->
        console.log("Dynamic make select OK!")


dynamicSelect '#diy_attached_vehicles_attributes_0_make', '#diy_attached_vehicles_attributes_0_model'
dynamicSelect '#diy_attached_vehicles_attributes_1_make', '#diy_attached_vehicles_attributes_1_model'

update_make_models.coffee

$(models).empty()
    .append("<%= escape_javascript(render "make_models/make_model") %>")

ma​​ke_models/_make_models.html.erb

<% @models.collect do |models| %>
   <option value="<%= models.id %>"><%= models.make_model_name %></option>
<% end %>

------------------------------------------ -------------------------------------------------- -------------------------------------- 编辑

这是我表单的一部分,其中包含那些选择框

<div class="vehicle_field">
    <%= f.fields_for :attached_vehicles do |av| %>
       <p>Select make</p>
       <%= av.select :make, options_for_select(@makes.collect { |make|[make.make_name, make.id] }, 0), {} %><br>
       <p>Select model</p>
       <%= av.select :model, (render "make_models/make_model"), {} %><br>
       ...
    <% end %>
</div>

【问题讨论】:

  • “但我就是无法正常工作”到底是什么意思?究竟发生了什么或没有发生什么?
  • 当我在makes选择框中选择make时,它应该发送所选make的make_id(就像它一样),并将“modelsSelect”内容(模型选择框的id)发送到“update_make_models.coffee”所以它清空并附加它。但是现在当我选择 make 时,模型选择框没有任何反应,并且在浏览器控制台中我得到“AJAX 错误:解析器错误”。

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


【解决方案1】:

想通了!

diys.coffee

dynamicSelect = (makesSelect, modelsSelect) ->
  $(document).on 'change', makesSelect, (evt) ->
    $.ajax 'update_make_models',
      type: 'GET'
      dataType: 'script'
      data: {
        make_id: $("#{makesSelect} option:selected").val(),
        model_div_id: modelsSelect
      }
      error: (jqXHR, textStatus, errorThrown) ->
        console.log("AJAX Error: #{textStatus}")
      success: (data, textStatus, jqXHR) ->
        console.log("Dynamic make select OK!")


dynamicSelect '#diy_attached_vehicles_attributes_0_make', '#diy_attached_vehicles_attributes_0_model'
dynamicSelect '#diy_attached_vehicles_attributes_1_make', '#diy_attached_vehicles_attributes_1_model'

diys_controller.rb

def update_make_models
  @models = MakeModel.where("make_id = ?", params[:make_id])
  @modelsid = params[:model_div_id]
  respond_to do |format|
     format.js
  end
end

update_make_models.coffee

$("<%= @modelsid %>").empty()
    .append("<%= escape_javascript(render "make_models/make_model") %>")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多