我正在工作的项目包含应用程序和着陆页。我们将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',
}]);
});
似乎路由定义问题,但我不知道如何修复。这可能和快速路由器有关吗?你能给我解释一下,帮我修好吗?谢谢
当您用字符串响应时,内容类型将是HTML。尝试以下操作,它将删除res.json
调用:
router.get('/api/items', function(req, res){
console.log('cc');
return [{
'toto': 'toto',
'tata': 'tata',
}];
});