我正在使用opal向后端发送ajax请求,但是当我试图在后端访问它时,json有效负载是错误的。
当我在后端执行puts @params.to_s时,它将显示为:
{"{\"username\":\"some_user\", \"password\":\"some_password\"}"=>nil}因此,要获得登录详细信息,我必须做:
@params.each do |k,v|
login_details = JSON.parse(k)
end我的前端(opal)提交请求如下所示:
def handle_login_submit details
url = "/client/api/auth"
HTTP.post url, payload: details.to_json, dataType: 'json' do |response|
case response.status_code / 100
when 2
puts response.status_code
self.login_state = :return_success
puts response.json
when 4
self.login_state = :return_failed
puts response.status_code
puts response.json
when 5
self.f_message = {type: :error, message: "There was a server error" }
self.login_state = :return_failed
end
end
end我绝对知道细节的格式是正确的,所以这不是问题。
我想说到底,到底是
我不知道是哪一个,但我倾向于相信是前者,因为在我切换到前端使用react.rb之前,它运行得很好。
发布于 2015-08-24 12:45:18
在遵循了this的建议之后,具体来说,我正在做:
before do
request.body.rewind
req = request.body.read
puts req
puts JSON.parse(req)
end我能够看到,请求到达服务器是正确的和预期的。我不知道为什么,但是西纳屈的反应太过火了,以至于@params说:
{"{\"username\":\"some_user\", \"password\":\"some_password\"}"=>nil}所以,最后我要做的是
before do
request.body.rewind
@request_payload = JSON.parse(request.body.read)
request.body.rewind
end在辛纳屈得到任何东西之前,先读出请求体,然后读出我需要的来自@request_payload的params。
https://stackoverflow.com/questions/32090775
复制相似问题