Как я могу отправить JSON из запроса POST клиенту? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть сервер узла, работающий с Express, который прослушивает входящие запросы. Я отображаю HTML-файл, который я хотел бы обновить при получении запроса GET на моем сервере. Однако данные, которые отправляются на мой сервер, отправляются API, когда происходит внешнее событие (асинхронно). Я не знаю, как обновить файл HTML, который я обслуживаю, содержимым JSON входящего запроса. В частности, я пытаюсь заменить содержимое inner.HTML входящего класса, как вы можете видеть в моем коде.

Я пытался использовать API выборки на стороне клиента, чтобы сделать запрос к серверу на получение этих данных, но, похоже, он не работает.

Server.js

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

const app = express();
const server = app.listen(port, () => console.log('App listening on port ${port}'));

app.set('view engine', 'html');
app.engine('html', ejs.renderFile);

app.use(express.static(__dirname + '/public'));

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



app.get (‘/incoming', (req,res)=>{

  const { status} = req.url;

  res.json(status);
  console.log(status);

}) ```

Client.js

fetch('http://localhost:3000/incoming').then(function(response) {
  return response.json();
}).then(response => {
  document.getElementById("dlr").innerHTML = response
}).catch(error => console.error(error))


index.html

 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/css-layout/1.1.1/css-layout.js" />
  <title>Node SMS Texting</title>
</head>
<body>
  <div class="container">
    <h2>Text API</h2>
    <input type="sender" name="from" id="from" placeholder="Enter sender ID ...">
    <input type="button" id="button" value="Send Text" class="button button-primary">
    <p class="response"></p>
    <p class="incoming"></p>
  </div>

  <script src="js/client.js"></script>
</body>
</html> 

I get the result logged in the console as per my console.log in the server side, but the client doesn't receive anything. This is the console.log


/incoming?user=A&to=Me&code=21404&Id=150000001A01F77B&&timestamp=2019-04-08+15%3A57%3A15&timestamp=1554739095&nonce=59167e2f-654c-4dd5-b236-bff9ac97f917

The only thing I see happening on the client side is /incoming set as text  set under the incoming.innerhtml class, but not the content of the GET request sent to my server.

Any help here would be highly appreciated.

Thanks in advance.

Regards,
Javier

1 Ответ

0 голосов
/ 05 апреля 2019

Вы отправляете запрос GET на конечную точку POST.Это вы можете исправить, передав тело и метод в ваш выбор на стороне клиента.Кроме того, вы должны обрабатывать ответ, когда он возвращается.Перепишите свою версию чего-нибудь подобного.

fetch('http://localhost:3000/incoming', {
  method: 'post',
  body: JSON.stringify(body)
}).then(response => {
  document.getElementById("incoming").innerHTML = response
}).catch(error => console.error(error))
...