gpt4 book ai didi

javascript - jQuery + node.js 表达 POST 请求

转载 作者:行者123 更新时间:2023-11-30 12:11:26 25 4
gpt4 key购买 nike

我正在尝试向 Node 服务器发送发布请求。这是我的客户端代码:

function send(userid,message){
$.ajax({
method: "POST",
url: "/chat/messages?id="+userid+'&message='+message
})
clear();
}

这是我的服务器端代码:

  app.post('/chat/messages',function (req,res){
var query = url.parse(req.url,true).query
insertMessage(query.id,query.message)
})

这可行,但我不确定使用 post 在查询字符串中获取数据是否正确。

我尝试在 $ajax 中添加数据字段参数:

function send(userid,message){
$.ajax({
method: "POST",
url: "/chat/messages"
data : {'id' : userid, 'message' : message}
})
clear();
}

并使用 bodyParser()在服务器端解析正文内容:

app.use(bodyParser.json())
app.post('/chat/messages',function (req,res){
console.log(req.body)
})

但是当我记录响应时,body{ }对象总是空的。这是为什么?是<form> POST 请求所需的标记?

我尝试编辑我的 ajax 请求以使用 json作为数据类型并将数据字符串化,但是 req.body仍然是空的。

$.ajax({
method: "POST",
url: "/chat/messages",
data : JSON.stringify({'id' : userid, 'message' : message}),
dataType: 'json',
})

最佳答案

当您将数据发布到服务器时,数据通常会被 urlencode 并添加到请求的正文中。在您的示例中,它看起来像这样:

id=<userid>&message=<message>

因此,您需要能够解析的 bodyparser 是 bodyparser.urlencoded()

app.use(bodyParser.urlencoded())

请注意,它并不总是经过 urlencoded,这完全取决于您使用什么来发送帖子。例如,AngularJS 默认将其作为 json 发送。好消息是您可以简单地添加两个 bodyparsers,并且您的路由不需要知道使用了哪种方法,因为在这两种情况下,数据最终都会以键/值对出现在 req.body 上。

关于javascript - jQuery + node.js 表达 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699833/

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