首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将ajax post数据传递到nodejs服务器?

如何将ajax post数据传递到nodejs服务器?
EN

Stack Overflow用户
提问于 2018-08-14 05:14:56
回答 1查看 67关注 0票数 0

因此,我正在进行一个API调用,调用中的一个对象是一个唯一的ID,我尝试使用Ajax将该ID对象传递回服务器端。这不管用。我做错了什么?

这是我的客户端代码,首先我循环遍历一个javascript对象:

代码语言: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:

代码语言:javascript
复制
<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路由:

代码语言:javascript
复制
router.post('/bookDetails', (req, res) => {
  let ID = req.query.ID;
  console.log('ID: ' + ID);
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 05:34:24

在传递到数据字段之前,您需要设置contentTypeJSON.stringify对象。(check this thread)

代码语言:javascript
复制
$.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解析器中间件总是一个好主意。

代码语言:javascript
复制
const bodyParser = require('body-parser');
app.use(bodyParser.json());

然后,您可以获得包含ID参数的请求体,如下所示

代码语言:javascript
复制
router.post('/bookDetails', (req, res) => {
  let ID = req.body.ID;
  console.log('ID: ' + ID);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51830662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档