【发布时间】: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