提问者:小点点

从NodeJs获取HTML而不是JSON


我正在工作的项目包含应用程序和着陆页。我们将Nodejs与Axios和VueJs一起用于应用程序部分。但是对于登陆页面,它是简单的jQuery。我必须为登陆页做一些API调用,但是我不能在jQuery中使用NodeJs结果来为登陆页提供数据。我是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仍然返回页面404的HTML。我找不到原因,老实说我也不明白原因。它似乎是试图得到一个不存在的页面,但我正在请求一个json从函数。我尝试用一个垃圾json替换contoller方法调用,但是没有任何效果。下面是我尝试的方法:

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

    似乎路由定义问题,但我不知道如何修复。这可能和快速路由器有关吗?你能给我解释一下,帮我修好吗?谢谢


  • 共1个答案

    匿名用户

    当您用字符串响应时,内容类型将是HTML。尝试以下操作,它将删除res.json调用:

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

    相关问题