【发布时间】:2015-11-12 11:22:40
【问题描述】:
我正在使用 opal-jquery 向我的后端发送一个 ajax 请求,但是当我尝试在后端访问它时,json 有效负载格式不正确。
当我在后端执行puts @params.to_s 时,它会显示为:
{"{\"username\":\"some_user\", \"password\":\"some_password\"}"=>nil}
所以要获取我必须做的登录详细信息:
@params.each do |k,v|
login_details = JSON.parse(k)
end
我的前端(蛋白石)提交请求如下所示:
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
我绝对知道详细信息的格式正确,所以这不是问题。
我猜到最后,归根结底是是不是
opal-jquery 发送 post 请求不正确
sinatra 不正确地解析请求。
我不确定它是哪一个,但我倾向于相信它是前者,因为在我改用 react.rb 作为前端之前它运行良好。
【问题讨论】:
-
我会做几件事。首先,我会在 javascript 控制台中查看
details,看看它是否是您认为的那样。其次,我会使用 cURL 发送带有您期望的值的请求,并查看您的后端如何处理该请求(或设置规范来执行此操作,提示提示;)其中一个会给您一个想法发生了什么。 -
“我绝对知道细节的格式是正确的,所以这不是问题。”
-
但除了您的个人主张之外,您没有提供任何证据。考虑到您是有问题的人,也是寻求帮助的人,您可能会考虑对他人少一点批评并收紧问题。祝你在这方面获得进一步的帮助;)
-
我不是在批评,如果你想让我像对待愚蠢的人一样对待他们并且不能独立思考,那么好吧,我会慢慢说。但我不这样做,因为我希望这个网站上的人有最低限度的智力,所以当我说“我绝对知道细节的格式正确,所以这不是问题”时,我希望人们阅读这篇文章然后去“Op must已经通过控制台进行了一些基本的调试,发现它既是一个 Json 字符串,而且正在发送正确的 Key 值”;或者你是说人们实际上是无能的,需要像白痴一样说话?
-
我在处理问题时尽量不做假设,这没有帮助,我希望我正在帮助的人能够原谅我对他们的情况缺乏了解——尤其是当它是有责任的时候他们提供尽可能多的信息,而您还没有这样做。更重要的是,看来您的态度问题多于技术问题,希望您尽快解决这两个问题。
标签: ruby json sinatra opalrb react.rb