【问题标题】:Recieving data sent by ajax.post接收 ajax.post 发送的数据
【发布时间】:2020-03-22 07:36:14
【问题描述】:

我想通过 ajax 将数据发送到在 localhost 上运行的 Node.js 服务器。为了测试这一点,我想将文本类型的输入发送到服务器并在那里记录。 这是我的 Post-Function(通过单击按钮调用):

 function answer(){
                let data = {
                    name : $('#send').val()
                };
                console.log(data);
                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:3456/MyWebApp/Test',
                    dataType: 'text',
                    data: data.name,
                    success: console.log('post was successfull'),
                    error: function(textStatus, errorTrown){
                        console.log(textStatus + " " + errorTrown);
                    }
                });
            }

在我的服务器上,我尝试使用以下功能收集数据:

    app.post('/MyWebApp/Test', function(request,response){
        console.log(request.body.data);
    });
    
app.listen(3456);

我的问题是,我的服务器上的值(在上面的 console.log 中)总是未定义的。 我已经尝试使用 dataType-Parameter json 而不是文本发送整个 json-Object,但随后我的服务器出现错误,试图读取未定义的属性值。我必须如何实现 app.post 函数,以使数据可读并使用它?

我希望能够理解我想要实现的目标以及我的问题是什么,我对 Node.js 或 Ajax 不太了解,但我仍将感谢任何帮助。

【问题讨论】:

  • data: data.name 更改为data: data
  • 也许您没有正确使用您的request。在app.post 方法中尝试console.log(request),看看它输出了什么。
  • 查看你的网络标签,你在发送什么?
  • 应该是console.log(req.body.name)

标签: javascript jquery node.js ajax


【解决方案1】:

您正在发送一个字符串值 data.name,因此您的 http 请求 Content-Type 将是 plain/text
NodeJS 方面,您使用的是 express 库,默认情况下它不提供发布请求正文。
您需要使用“数据”事件收集发布请求正文

request.on("data", callback);

【讨论】:

  • 如果你想在 express 上解析 JSON 你需要使用 express json 中间件app.use(express.json())
猜你喜欢
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 2012-05-20
  • 2016-05-21
  • 2011-05-30
相关资源
最近更新 更多