因此,我正在进行一个API调用,调用中的一个对象是一个唯一的ID,我尝试使用Ajax将该ID对象传递回服务器端。这不管用。我做错了什么?
这是我的客户端代码,首先我循环遍历一个javascript对象:
<% apiResultsdata['items'].forEach(function(items) { %>
<% let ID = items['id'] %>
<% let volumeInfo = items['volumeInfo'] %>
<% let author = volumeInfo['authors'] %>
<% let title = volumeInfo['title'] %>
<% let image = null %>
<% if(!(volumeInfo['imageLinks'] === undefined)) { %>
<% image = volumeInfo['imageLinks']['smallThumbnail'] %>
<% } %>
ID是点击链接后需要回传给nodejs的ID:
<div class="col">
<div class="card-block px-2">
<a href="/bookDetails"><h5 class="card-title"><%= title %></h5></a>
<script type="text/javascript">
$('a').click(function() {
$.ajax({
type: 'post',
data: {'ID':'<%= ID %>'},
url: 'localhost:3000/bookDetails',
success: function(data){
console.log('success');
}
});
});
</script>
在我的数据字段中,我将ID作为ejs对象传递,因为这是我正在使用的模板语言。不确定这是不是对的。
下面是服务器上的post路由:
router.post('/bookDetails', (req, res) => {
let ID = req.query.ID;
console.log('ID: ' + ID);
});
发布于 2018-08-14 05:34:24
在传递到数据字段之前,您需要设置contentType
和JSON.stringify
对象。(check this thread)
$.ajax({
type: 'post',
contentType: "application/json; charset=UTF-8",
data: JSON.stringify({ ID: '<%= ID %>' }),
url: 'localhost:3000/bookDetails',
success: function(data) {
console.log('success');
}
});
而且在服务器端使用json解析器中间件总是一个好主意。
const bodyParser = require('body-parser');
app.use(bodyParser.json());
然后,您可以获得包含ID
参数的请求体,如下所示
router.post('/bookDetails', (req, res) => {
let ID = req.body.ID;
console.log('ID: ' + ID);
});
https://stackoverflow.com/questions/51830662
复制相似问题