gpt4 book ai didi

javascript - 为什么这个 POST 请求不会向服务器发送 JSON 字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 18:15:45 25 4
gpt4 key购买 nike

我正在使用 Sinatra。我有一个按钮,可以通过发出 POST 请求将 JSON 格式的字符串发送到服务器。唯一的问题是,JSON 字符串没有到达服务器。

这是index.erb:

<input id="post-button" type="button" value="Send POST request">

这是 script.js:

window.onload = function(){
var btn = document.getElementById('post-button');
btn.onclick = function(){
var req = new XMLHttpRequest();
var reqObj = {
name: 'Joe',
age: '100'
};
var reqJSON = JSON.stringify(reqObj);

req.open('POST','/post_target',true);
req.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
req.send(reqJSON);
}
}

最后,main.rb:

get '/' do 
erb :index
end

post '/post_target' do
p params
end

当我单击按钮并检查 Firebug 时,我看到浏览器发送了一个 POST 请求。但是当我检查 Ruby 控制台时,它会打印 {} for params。如果它工作正常,我想 params 会以字符串形式显示一个 JSON 对象,以及它会显示的任何其他内容。

我在我的机器上运行 Sinatra,地址为 http://localhost:4567

我做错了什么?如果我需要使用 jQuery 执行请求,我可以这样做,但是可以使用“vanilla”JavaScript 完成吗?

最佳答案

“params”最有可能寻找 URL 编码的查询字符串值。您需要帖子的正文内容,而不是参数。

参见 How to parse JSON request body in Sinatra just once and expose it to all routes?

关于javascript - 为什么这个 POST 请求不会向服务器发送 JSON 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435033/

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