【问题标题】:Getting HTML instead of JSON from NodeJs从 NodeJs 获取 HTML 而不是 JSON
【发布时间】:2020-11-25 21:44:13
【问题描述】:

我正在处理包含应用程序和登录页面的项目。我们将 Nodejs 与 Axios 和 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));
        });
    });
    

即使我得到 status:200,nodejs 也会返回第 404 页的 HTML。 我找不到原因,老实说,我不明白原因。似乎是试图让一个页面不存在,但我正在从函数请求一个 json。 我尝试用垃圾 json 替换 contoller 方法调用,但没有任何效果。 这是我尝试的方法:

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

似乎路由定义有问题,但我不知道如何解决。这可能与快速路由器有关吗?你能解释一下并帮我解决这个问题吗?谢谢

【问题讨论】:

  • 您没有在代码中的任何位置指定application/json 作为内容类型吗?
  • 我认为我们需要myApiController.getItems 的代码,因为它会返回一个您在if/then 中使用的响应对象,以决定将什么传递给res.send()
  • 我不认为是 myApiController 的问题。你能检查我最后的代码部分吗?我将函数关联到路由器,结果是一样的。
  • @user3788685 不,我正在尝试通过简单的可能方式来做。但正如我所说,我是这个应用程序架构的新手。您对我如何更改内容以获取列表有任何想法吗?谢谢
  • @Cutis - 查看this 问题并回答它可能会有所帮助,因为我们在上面看到的代码不够多

标签: javascript node.js json api axios


【解决方案1】:

当您使用字符串进行响应时,内容类型将为 HTML。试试这个,它会删除 res.json 调用:

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

【讨论】:

  • 我不知道我发布的代码最后一部分的区别。但是我尝试了一下,我遇到了同样的问题。可能是什么问题?
猜你喜欢
  • 2016-10-28
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多