gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:55:11 25 4
gpt4 key购买 nike

重点:在前端使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com