【问题标题】:How can I send a POST request without data in Java Script如何在 Javascript 中发送没有数据的 POST 请求
【发布时间】:2020-05-08 02:41:03
【问题描述】:

所以我已经在使用 Ajax 将数组发送到路由器,正如您在此处看到的那样......

 var send = function () {
            var data = search
            console.log(data)
            $.ajax({
                type: 'post',
                url: "/next",
                data: JSON.stringify(data),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    console.log('Success')
                },
                error: function (err) {
                    console.log(err)
                }
            })
        }
        send();

如果我将这个控制台记录为

console.log(req.body)

我明白了

[ 'Faye Dunaway', 'Kathy Bates' ]

很好,我需要这个。但是,在我的路由器中,我也尝试像这样呈现一个包含数据的新页面......

router.post("/next", function (req, res) {
    Movies.find({name:{ $in: req.body}}, function(err, found){
        if(err){
            console.log(err)
        } else {
            res.render('movies',{
                movies:found
            })
        }
    })
})

现在有人告诉我,我不能用 ajax 调用 res.render,所以我需要在表单中创建一个按钮。

<form action="/next" method="post">
    <button  class="btn btn-outline-success btn-lg next">next</button>
 </form> 

但是,如果我现在 console.log req.body 我得到

[ 'Faye Dunaway', 'Kathy Bates' ]
{}

所以我在想两件事,要么 res.render 必须用 ajax 调用,要么我需要摆脱 {}。如您所知,我对此很陌生。感谢您的帮助。询问任何其他信息。

【问题讨论】:

  • 问题是您收到两个 http 请求。一个带有所需数据,另一个带有空正文。是这个问题吗?
  • @AravindaMeewalaarachchi 是的,我想你可以这么说。但是我需要 ajax 来发送数组,我还需要表单按钮来触发 res.render,因为这不能用 ajax 来完成。但正因为如此,我有一个空对象,不断给我一个错误。
  • 您能否检查console.log(req.url) 的输出并给我打电话...
  • @AravindaMeewalaarachchi 抱歉迟到了,对于 Ajax 和按钮,req.url 的输出都是 /next。

标签: javascript node.js ajax express mongoose


【解决方案1】:

据我所知,通过渲染传递的数据不在正文中,而是在模板引擎中使用。因此,您可以像这样在模板引擎 (PUG) 的脚本块中访问它。

script.
    !{movies}

如果你想通过捆绑脚本(使用 webpack 创建)访问数据,你必须像这样在模板中定义它。

script.
    const movies = !{movies}

【讨论】:

  • 感谢您的回答。我在 res.render 中访问数据没有问题但是,req.body 有一个数组和空对象。我正在尝试摆脱空对象。
  • 啊,我明白了。对不起,我错误地暗示了你的问题。
猜你喜欢
  • 2022-11-19
  • 2016-03-24
  • 2012-06-02
  • 2016-09-29
  • 2014-12-01
  • 1970-01-01
  • 2016-04-03
  • 2011-10-18
  • 1970-01-01
相关资源
最近更新 更多