【问题标题】:406 Not Acceptable error while making an ajax call进行 ajax 调用时出现 406 Not Acceptable 错误
【发布时间】:2014-02-21 00:16:57
【问题描述】:

我的 .js.coffee 文件之一中有以下代码 sn-p:

$.ajax({
      url: '/attachinary_files/' + id
      method: 'put'
      }).done(//do something)

在我的浏览器控制台中出现错误:

406 Not Acceptable

我找不到原因。我在 application.js 文件中需要必要的文件,例如:

//= require jquery
//= require jquery_ujs
//= require_tree .

我找不到我丢失的东西。任何帮助将非常感激。谢谢:)

编辑:

控制器

def update
    super
    attachinary_file = AttachinaryFile.find(params[:id])
    AttachinaryFile.where(attachinariable_id: attachinary_file.attachinariable_id)
      .update_all(is_primary: false)
    attachinary_file.update_column(:is_primary, true)
    respond_to do |format|
      flash.now[:notice] = nil
    end
  end

【问题讨论】:

  • 您的路线对此有何看法?你的控制器代码呢?
  • @RichPeck 我更新了我的帖子

标签: jquery ruby-on-rails ajax coffeescript


【解决方案1】:

您缺少导致HTTP 406 错误的内容类型。

更新您的 ajax 代码以包含响应的数据类型:

$.ajax({
  url: '/attachinary_files/' + id
  method: 'put'
  dataType: 'script'
}).done(//do something)

详情请参考Data-Type (with jQuery)

【讨论】:

    【解决方案2】:

    1) 验证您的控制器是否接受 js 调用

    2) 在你的 JS 代码中,指定你想要一个 JS 格式的结果,带有标题或带有 url:

    url: '/attachinary_files/' + id + '.js'

    3) 如果还不够,请在您的控制器中指定您为 JS 返回的内容:

    respond_to do |format|
      flash.now[:notice] = nil
      format.js { render js: "alert('Hello Rails');" }
    end
    

    【讨论】:

    • 谢谢。这工作正常,但如果我删除警报,我将不得不创建一个 .js 部分?我说的对吗?
    • 是的,如果您不内联响应,则需要一个部分
    【解决方案3】:

    我使用的是 Spring 3.2.5 并收到此错误。 使用3.1.1解决

    406 Not Acceptable: Spring 3.2 + JSON + AJAX

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 2021-01-21
      • 2014-11-12
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2012-07-23
      • 2012-01-01
      相关资源
      最近更新 更多