получать json контент из node.js в html с использованием AJAX - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть эта функция, когда я хочу отправить запрос AJAX на сервер и получить вывод запроса MySQL на http://localhost: 3000 / result. html page. Это происходит по нажатию кнопки.

<body>

<form action="/setLocation" method="POST">
  ...
<button id="get">Do Action</button>

</form>

<script>

   document.getElementById('get').onclick = function(){

   calculateAndDisplayRoute(directionsService, directionsDisplay);

   $.ajax({

    url: 'https://localhost:3000/setLocation',

    type:'POST',

    success : function(data){

    var json = JSON.parse(data);

    console.log('data received ',data); 

    val = document.getElementById('driver_details').innerHTML;

   }

 }); 

}

</script>

</body>

и на моем сервере. js, я обрабатываю это следующим образом:

const express = require("express");

var app = express();

const mySqlConnection = require("./connection");


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

  r_value = between(0,7)

  value = '';

  console.log(req.body);

  mySqlConnection.query("SELECT first_name from tableX where id = ?",r_value,function  (err,result) {

    if (err) throw err;

    res.send(JSON.stringify(result));

  });

});

Я получаю ответ json, но на странице http://localhost: 3000 / setLocation , а не на моей http://localhost: 3000 / result. html стр. Как я могу получить ответ на той же странице, откуда я отправил запрос?

1 Ответ

0 голосов
/ 25 апреля 2020

Это «трюк» из HTML ... Любая кнопка в <form> будет действовать как кнопка отправки (событие без атрибута type="submit"). Вам нужно добавить event.preventDefault() в ваш обработчик кликов. Другими словами, измените

document.getElementById('get').onclick = function(){

на

document.getElementById('get').onclick = function(event){
    event.preventDefault();
    // code continue here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...