Как я могу отправить целочисленное значение как JSON почтовое значение и обработать в файле express JS? - PullRequest
1 голос
/ 01 мая 2020

Ниже мой JavaScript код. Я пытаюсь отправить ID на сервер. js через AJAX сообщение следующим образом:

$("#select_link").click(function(e){

   e.preventDefault();

   console.log("link clicked..");

   var data={};

   data.id = document.getElementById("d_id").value;



   $.ajax({

     type: "POST",

     data: JSON.stringify(data),

     processData: false,

     contentType: 'application/json',

     url: 'http://localhost:3000/driverDetails',

     success: function(data){

       console.log("success:  "+JSON.stringify(data));

     }

   });

 });

Ниже мой сервер. js код.

app.post('/driverDetails', function(req, res){

  var obj = {};

  var id_driver = Number(JSON.stringify(req.body.id));

  console.log('body: '+ id_driver);

  res.send(req.body);

})

Когда Я отправляю свои данные как:

res.send(req.body)

Я могу правильно просматривать данные в консоли браузера. Но идентификатор в строковом формате. Я хочу этот идентификатор в целочисленном формате на этом сервере. js, чтобы я мог использовать его в запросе SQL. Как мне этого добиться? Если я попытаюсь удалить свойства data и processData из AJAX, он вернет пустой объект в ответ - он не отправит ничего на сервер. js файл, даже строковую версию моего идентификатора.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

попробуйте этот код

вы можете поставить 'Number' для 'document.getElementById ("d_id"). Value "в ajax fun c.

, и вы не' t использовать «JSON .stringify» для любого места. Вы можете использовать из 'bodyParser' на сервере. js. Я использовал его.

Я запускаю следующий код и все в порядке.

index. html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Test</title>
    <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
  </head>
  <body>
    <button id="select_link">Select Link</button>
    <input type="number" id="d_id">

    <script>
      $("#select_link").click(function (e) {
        e.preventDefault();
        console.log("link clicked..");
        var data = {};
        data.id = Number(document.getElementById("d_id").value);
        console.log(data);

        $.ajax({
          type: "POST",
          data: JSON.stringify(data),
          processData: false,
          contentType: "application/json",
          url: "http://localhost:3000/driverDetails",
          success: function (data) {
            console.log("success:  " + JSON.stringify(data));
          },
        });
      });
    </script>
  </body>
</html>

server. js:

const express = require('express')
const cors = require('cors');
const bodyParser = require('body-parser')
const app = express()
const port = 3000

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.use(cors({origin: 'http://127.0.0.1:8021'}));

app.post('/driverDetails', (req, res) => {
    var id_driver = Number(req.body.id);
    console.log('body: '+ id_driver);
    res.send(req.body);
})

app.listen(port, () => {console.log(`App listening at http://localhost:${port}`)})
0 голосов
/ 01 мая 2020

Я предполагаю, что вы получаете идентификатор в этой строке:

 data.id = document.getElementById("d_id").value;

Итак, этот ввод "d_id" является типом текста? Если да, вы должны изменить его на номер типа. Если вам нужно сохранить его как текстовый тип, вам необходимо преобразовать его значение в Number, прежде чем выполнять JSON Stringification.

data.id = +document.getElementById("d_id").value.trim();

Префикс + приведет вашу строку к числу, а усечение () гарантирует, что он не содержит нежелательных пробелов. Теперь вы в безопасности.

Учитывая приведенный выше пример, если ваше входное значение «неопределено» или содержит нечисловые символы, ваш идентификатор будет NaN. Если ваше входное значение равно нулю, ваш идентификатор будет 0.

Это потому, что текст типа ввода всегда возвращает строку, а типы данных имеют значение JSON. Если вы ввели строку в строку, JSON .parse () выведет строку, такую ​​же для числа. Здесь приведена справка о JSON типах данных

Есть, конечно, другие способы приведения к Number в JS, такие как Number (), parseInt (), parseFloat (), ~ ~, >>>> 0, et c. Это хороший момент, чтобы знать о. Вот прохладное и легкое чтение о:

https://gomakethings.com/converting-strings-to-numbers-with-vanilla-javascript/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...