【问题标题】:CoffeeScript keeps triggering Error when I'm getting a 200 response back?当我收到 200 响应时,CoffeeScript 不断触发错误?
【发布时间】:2013-03-02 03:16:33
【问题描述】:

我正在尝试创建一个remote: true 表单,并且我已经完成了所有设置,当我单击提交按钮时,每次都会触发错误操作。这就是我的 CoffeeScript 的设置方式:

$(document).ready ->
  $("#new_report").on("ajax:success", (e, data, status, xhr) ->
    $("#new_report").append "<p>SUCCESS</p>"
  ).bind "ajax:error", (e, xhr, status, error) ->
    $("#new_report").append "<p>ERROR</p>"

还有我的 Reports_Controller

  def create
    @report = Report.new(params[:report])

    respond_to do |format|
    if @report.save
    format.json { render json: "Created", :status => :created }
     else
    format.json { render json: @report.errors, status: :unprocessable_entity }
    end
     end

还有我的表格:

    <%= form_for(@report, remote: true ) do |t| %>
<p id="reportalert"></p>
    <%= t.text_field  :plant_site,    placeholder: "Plant Site" %>

    <%= t.text_field  :route_number,  placeholder: "Route Number" %>

    <%= t.text_field  :driver_name,   placeholder: "Driver name if available" %>

    <%= t.date_select :date_recorded, html: { class: "input-block-level" } %>

    <%= t.text_field  :action,        placeholder: "Action taken" %>

    <%= t.text_area   :report_body,   placeholder: "What you witnessed",
                                     style: "height: 300px;",
                                     class: "input-block-level" %>

    <%= t.submit     "File Report",  class: "btn btn-primary btn-large" %>

    <% end %>

但是我查看rails日志,只有200响应,没有错误,信息提交到数据库,为什么ajax:error触发了?我也尝试用ajaxSuccessajaxError 替换ajax:errorajax:success,但它什么也没做。任何信息都将非常感谢。

我正在尝试关注:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

【问题讨论】:

  • 顺便说一下,edgeguides 适用于 rails 版本 4。您已将 rails 3 标签放在您的问题上。

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


【解决方案1】:

您似乎没有在控制器的 JSON 响应中返回状态。这是触发 ajax:success 在 jQuery 中的原因:

if ( status >= 200 && status < 300 || status === 304 ) {....}

所以你的 respond_to 块应该是这样的:

respond_to do |format|
  if @report.save
    format.json { render json: "Created", :status => :created }
  else
    format.json { render json: @report.errors, status: :unprocessable_entity }
  end
end

【讨论】:

  • 我在我的 json 中添加了 status: :created,但是当我返回 201 时仍然只是错误
猜你喜欢
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2015-01-28
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多