[英]Sending AJAX POST request to Express
我有两个问题。 第一个是,我不知道在使用 AJAX 发送 POST 请求时我做错了什么。 我正在返回结果,但我发送的 userSrc 参数未定义。
如何发送参数以便 Express 可以使用 req.query 读取它并将其用作搜索参数?
这是代码:
查询:
$(function() {
$("#userSrc").keyup( function () {
let dInput = $("#userSrc").val();
console.log(dInput);
$.ajax({
type: 'POST',
url: '/quicksearch',
data : {userSrc :dInput},
success: function(result) {
let html = '';
console.log(result);
result.each(element =>{
console.log(element);
html += "<h2>" + element.Title +"</h2>";
$("#result").html(html);
});
}
});
});
});
表达:
app.post("/quicksearch", (req, res) => {
let search = req.query.userSrc;
console.log(search);
Recent.findOne({
Title: search
}, (err, foundData) => {
if (err || foundData == null) {
fetch("http://www.omdbapi.com/?s=" + search + "&apikey=b322e698")
.then(response => response.json())
.then(data => {
console.log("API RESPONSE");
console.log(data.Search);
res.send({
result: data.Search
});
});
} else {
console.log("Found Local");
res.send( {
result: foundData
});
}
});
我的第二个问题是,自从我尝试使用 Object.keys 和 ForEach 以来,如何实现我收到的结果。 我不知道如何得到 result.Title。
{result: Array(7)}
result: Array(7)
0: {Title: "Undefined", Year: "2006", imdbID: "tt1436480", Type: "movie", Poster: "https://m.media-amazon.com/images/M/MV5BMTgzNzkxMzk5Nl5BMl5BanBnXkFtZTgwMTQ2MzA2MDE@._V1_SX300.jpg"}
1: {Title: "The Undefined", Year: "2013", imdbID: "tt3271334", Type: "movie", Poster: "N/A"}
2: {Title: "Viet Costas - Citizenship: Undefined", Year: "2014", imdbID: "tt3838986", Type: "movie", Poster: "N/A"}
3: {Title: "A Love Undefined", Year: "2015", imdbID: "tt4955578", Type: "movie", Poster: "N/A"}
4: {Title: "Artist Undefined", Year: "2015", imdbID: "tt5190590", Type: "movie", Poster: "N/A"}
5: {Title: "Undefined", Year: "2014", imdbID: "tt5581814", Type: "movie", Poster: "N/A"}
6: {Title: "Undefined: A Muslim-American Musical", Year: "2017", imdbID: "tt7178924", Type: "movie", Poster: "https://m.media-amazon.com/images/M/MV5BODMwYTE1ZG…jk0ZmZhXkEyXkFqcGdeQXVyNzI4NTUyNjE@._V1_SX300.jpg"}
length: 7
__proto__: Array(0)
__proto__: Object
提前致谢!
快速处理程序正在获取 URL 中的查询参数。 那些是?
例如,在 URL 中, /quicksearch?search=text
然后req.query
将是{ search: "text" }
。
您想读取请求正文。 这可以通过req.body
来完成。 确保你在你的 express 应用中添加了body-parser
中间件。 包括中间件:
const bodyParser = require('body-parser');
const urlencodedParser = bodyParser.urlencoded({ extended: false });
app.use(urlencodedParser);
现在在你的路由处理程序中你可以访问req.body
。
你的forEach
很好,但似乎你在错误的变量上做这件事。 在您的 JavaScript 中, result
包含您的整个响应主体。 您的数组在result.result
。 为您的 JavaScript 重写:
$(function() {
$("#userSrc").keyup(function() {
let dInput = $("#userSrc").val();
console.log(dInput);
$.ajax({
type: 'POST',
url: '/quicksearch',
data: {
userSrc: dInput
},
success: function(response) { // response is the whole body
let html = '';
console.log(response.result);
response.result.each(element => {
console.log(element);
html += "<h2>" + element.Title + "</h2>";
$("#result").html(html);
});
}
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.