Получение HTML вместо JSON от NodeJs - PullRequest
2 голосов
/ 05 августа 2020

Я работаю над проектом, содержащим приложение и целевые страницы. Мы используем Nodejs с Ax ios и VueJs для части приложения. Но для целевых страниц это просто jQuery. Мне нужно выполнить несколько вызовов API для целевых страниц, но я не могу использовать результат NodeJs в jQuery для обслуживания данных на моих целевых страницах. Я новичок в NodeJs и этих технологиях. Вот мои коды:

  • мои маршруты:

    const router = express.Router();
    ...
    router.get('/api/items', myApiController.getItems);
    
  • NodeJs контроллер

     module.exports.getItems = (req, res) => {
        const response = myApiController.getItems();
    
        if (response.status === 200) {
          res.send({
          status: 200,
          data: response.data
        })
      } else {
        res.send({
        status: 404,
        data: null
        })
      }
    }
    
  • мой основной сценарий:

    $.get("/api/items", function(data, status){
        alert("Data: " + data);
        var mylist = $("#mylist");
        $.each(data, function(item) {
          mylist.append($("<option />").val(item.name).text(item.name));
        });
    });
    

Даже если я получаю статус: 200, nodejs возвращает HTML страницы 404. Я не могу найти причину , И честно говоря не понимаю в чем причина. Кажется, это попытка получить страницу не существует, но я запрашиваю json из функции. Я пытаюсь заменить вызов метода контроллера на tra sh json, но ничего не работает. Вот что я пробую:

router.get('/api/items', function(req, res){
  console.log('cc');
  return res.json([{
    'toto': 'toto',
    'tata': 'tata',
  }]);
});

Кажется, проблема с определениями маршрутов, но я не знаю, как исправить. Могло ли это быть что-то с маршрутизатором express? Не могли бы вы объяснить мне и помочь исправить это? Спасибо

1 Ответ

1 голос
/ 05 августа 2020

Когда вы отвечаете строкой, тип содержимого будет HTML. Попробуйте это, что удаляет вызов res.json:

router.get('/api/items', function(req, res){
  console.log('cc');
  return [{
    'toto': 'toto',
    'tata': 'tata',
  }];
});
...