簡體   English   中英

如何將Ajax發布數據傳遞到Node.js服務器?

[英]How to pass ajax post data to nodejs server?

因此,我正在進行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);
});

您需要先設置contentTypeJSON.stringify對象,然后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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM