javascript - Ajax 为我的联接表发出帖子请求时出现问题

标签 javascript ruby-on-rails ajax

重点:在前端使用 ajax 对我的连接表发出 post 请求时出现 422 错误。

我正在使用rails(作为我的api)和ajax为全栈项目创建一个应用程序,以向我的路线发出api请求。我的后端有三个表(用户::email、:token、:password_digest)、(fantasy_players::player_id、:user_id、:target)和(玩家::name、:team、:bye)

在我的前端,我可以成功地向我的玩家表发布帖子,并且我向后端发出的 curl 请求似乎适用于我的 Fantasy_players 表。我收到一个 422 无法处理的实体,服务器代码如下:

Started POST "/fantasy_players" for 127.0.0.1 at 2017-12-02 19:29:38 -0500
Processing by FantasyPlayersController#create as */*
  Parameters: {"submit"=>"Add To My Players", "player"=>{"id"=>"1"}, "fantasy_player"=>{"target"=>"yes"}}
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."token" = $1 LIMIT $2  [["token", "92ed3b66f0608a14b0225cad5a362027"], ["LIMIT", 1]]
   (0.2ms)  BEGIN
   (0.2ms)  ROLLBACK
[active_model_serializers] Rendered ActiveModel::Serializer::Null with ActiveModel::Errors (0.41ms)
Completed 422 Unprocessable Entity in 8ms (Views: 2.7ms | ActiveRecord: 0.6ms)

前端事件:

    const onAddUserPlayer = function (event) {
      event.preventDefault()
      const data = getFormFields(this)
      console.log(data)
      api.addUserPlayer(data)
        .then(ui.addUserPlayerSuccess)
        .catch(ui.addUserPlayerFailure)
    }

API调用

    const addUserPlayer = function (data) {
      return $.ajax({
      url: config.apiOrigin + '/fantasy_players',
      method: 'POST',
      headers: {
        Authorization: 'Token token=' + store.user.token
        },
        data
      })
    }

最佳答案

我认为是CSRF问题。

渲染相应 View 的布局应包含以下内容:

<%= csrf_meta_tag %>

它将 CSRF token 添加到您的 View header 中,因此您可以使用以下内容轻松从前端获取它: $('meta[name="csrf-token"]').attr('content') .

在您的情况下,尝试将 beforeSend 添加到您的 ajax 请求中。也许是这样的:

beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},

干杯!

关于javascript - Ajax 为我的联接表发出帖子请求时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47614434/

相关文章:

javascript - AngularJS REST 调用 - 属性 'name' 未定义

javascript - Ajax API 调用导致 CORS 问题

javascript - Kendo Grid 相当于 onEditComplete

javascript - 你能在 $.post() 中使用 $(this) 吗?

javascript - 光滑的 slider 加载后运行脚本

ruby-on-rails - 如何每天在 rails 中登录一个新文件?

ruby-on-rails - 使用 Carrierwave 和 MiniMagick 将 SVG 转换为透明 PNG

javascript - select 的 AngularJS 模型返回未定义

ruby-on-rails - 迁移以将字符串数组转换为整数

javascript - 使用 ajax 更新 Bokeh 图