【问题标题】:rails - devise keeps returning html responses to ajax requestsrails - 设计不断返回对ajax请求的html响应
【发布时间】:2016-06-17 13:20:27
【问题描述】:

我一直在尝试设计将 json 返回到 ajax 请求,但它一直在发回 html。我关注了this(以及其他,我确实查看了 2 个谷歌搜索页面上的每个链接)教程,但它仍然发送 html。以下是我更改的内容和位置:

config/initializers/devise.rb:

已添加:config.http_authenticatable_on_xhr = false

已创建应用程序/控制器/sessions_controller:

class SessionsController < Devise::SessionsController
  respond_to :json
end

已创建 app.controllers/registrations_controller:

class RegistrationsController < Devise::RegistrationsController  
  respond_to :json
end

在 config/routes.rb 下添加

devise_for :users, :controllers => {
  sessions: 'sessions', 
  registrations: 'registrations'
}

我想就是这样。但我不断得到 html。我应该删除与设计相关的部分视图吗?

请求如下所示:

在 2016-06-17 09:01:19 -0400 开始为 ::1 发布 POST "/users/sign_in" 由 SessionsController#create as / 处理 参数:{"user"=>{"email"=>"", "password"=>"[FILTERED]"}, "authenticity_token"=>"HDLnoiGZXXoarFjdlfxZL6AF0EY8Xf1K5mRwceVmVw647lG+NPJxDYstXLhiH4BGGwmNrrX8U5gZD8B3IfhS+w=="}

【问题讨论】:

  • 你能把你的服务器日志发布进来的请求吗?
  • @Ruslan 我添加了一个请求示例
  • 在发出 POST 请求时,您不会错过format: :json 吗?

标签: ruby-on-rails ajax devise


【解决方案1】:

我在 ajax 请求中丢失了 dataType 属性,在将其设置为 `application/json' 后它可以工作。

$.ajax({
    method: "POST",
    url: "/users/sign_in",
    dataType: 'application/json', <--- here
    headers: {
      'X-CSRF-Token': csrfTokenContent
    },
    data: {
      user: {
        email: email,
        password: password,
      },
      authenticity_token: csrfTokenContent
    }
  })

【讨论】:

    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多