我在AWS Ubuntu服务器上运行一个简单的Node.js Web应用程序。我有一些来自API的JSON数据,这些数据我本地存储在Ubuntu Server上的文本文件中,称为data.json
。
我只想通过AJAX调用从JSON文件加载该数据并将其渲染在客户端HTML。
这是我的项目目录结构:
MyApp
server.js
index.html
data.json
此客户端代码在WebStorm和本地工作,但是在我的Live服务器上返回错误(看起来它正在返回HTML错误文件,而不是JSON,它解释了解析错误,但没有解决如何获取此数据(。
<script>
$(document).ready(function(){
$.ajax({
url: "/data/data.json",
method: "GET",
dataType: "json",
error: function() {
console.log("error");
},
success: function(data) {
console.log(data);
}
});
});
</script>
我认为我需要在节点内提供此JSON文件,以便我可以从客户端获得HTTP获取请求,但不明白所有这些都如何合在一起。有人可以帮助提供一个例子吗?
编辑:node server.js代码:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var router = express.Router();
router.use(function (req, res, next) {
console.log("/" + req.method);
next();
});
router.get("/",function(req, res){
res.sendFile(__dirname + "/index.html");
});
app.use("/",router);
app.use("*",function(req, res){
res.sendFile(__dirname + "/index.html");
});
app.use('/data', express.static('public'));
server.listen(process.env.PORT || 3000);
console.log('Server is running on port 3000...');
我建议将*.json
文件放入子文件夹。而不是在服务器端可以静态访问该文件夹。
示例:将所有*.json
文件放入./public
文件夹中
// server.js
const express = require('express')
const app = express()
app.use('/data', express.static('public'))
...
客户端:
$.get( "/data/my-file.json", function( data ) {
alert( "Data Loaded: " + data );
});