Ajax发布我的联接表发布请求的问题

时间:2017-12-03 01:35:06

标签: javascript ruby-on-rails ajax

到目前为止:422错误使用前端的ajax为我的连接表发布帖子请求。

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

在我的前端,我可以成功发布到我的玩家桌面,我的后端的卷曲请求似乎对我的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 call

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

1 个答案:

答案 0 :(得分:0)

我认为这是CSRF问题。

呈现此对应视图的布局应包含:

<%= csrf_meta_tag %>

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

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

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

干杯!