javascript - 如何将ajax post数据传递给nodejs服务器?
问题描述
因此,我正在进行 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 的内容:
<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 对象传递,因为那是我正在使用的模板语言。不确定这是否正确。
这是服务器上的发布路线:
router.post('/bookDetails', (req, res) => {
let ID = req.query.ID;
console.log('ID: ' + ID);
});
解决方案
在传递给数据字段之前,您需要设置contentType
和对象。JSON.stringify
(检查这个线程)
$.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-parser 中间件总是一个好主意
const bodyParser = require('body-parser');
app.use(bodyParser.json());
然后就可以得到包含ID
参数的请求体如下
router.post('/bookDetails', (req, res) => {
let ID = req.body.ID;
console.log('ID: ' + ID);
});
推荐阅读
- php - PHP:检查 array_filter 是否从数组中删除了任何条目
- powerbi - powerBI 地图不显示城市
- python - 对复杂的python字典进行排序?
- python - 在未堆叠的条形图上添加值 - python
- python - python - 带有通配符的 MySQLdb Like 运算符
- android-studio - 为什么每次我在 android studio 的实际设备上运行我的应用程序时,gradle build 都会失败?
- firebase - 一个用于 GCM 和 FCM 的 Azure 通知中心
- php - Laravel:控制器功能中的未定义变量
- javascript - svg.js 用动画导出 svg
- java - 如何将 AWS Elastic Beanstalk spring boot java 应用程序连接到 VisualVM [不适用于 tomcat]