//服务端
const express = require('express');
const app = express();
app.use(express.static(__dirname));
app.listen(8000);
console.log('server running');
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="js/jquery-1.11.0.min.js"></script>
</head>
<body>
<script>
$.ajax({
url: '/json/example.json',
type: 'GET',
dataType: 'json',
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
</script>
</body>
</html>
显示走fail的回调,怎么解决?
看出来你想做一个mock data server。
一般mock server和dev server是分开的,然后通过反向代理将api请求代理到mock server。
你可以使用类似这种现成的库
https://www.npmjs.com/package...
http://www.mock-server.com/
这里有个简单的教程
https://coderwall.com/p/ss80v...
你这里相当于把整个目录提供了静态请求,你直接访问这个json都能访问到,但ajax请求走到fail,我不知道为什么,node里静态代理json貌似是要经过什么处理。我们公司项目里对mock data的引用是通过node读文件写入的。我这里有个例子是用json-server的
var jsonServer = require('json-server')
var apiServer = jsonServer.create()
var apiRouter = jsonServer.router('db.json')
var apiMiddlewares = jsonServer.defaults()
apiServer.use(apiMiddlewares)
apiServer.use('/api', apiRouter)
apiServer.listen(port + 1, function (err) {
if (err) {
console.log(err)
return
}
console.log('Listening at http://localhost:' + (port + 1) + '\n')
})
api 代理
...
proxyTable: {
'/api/': 'http://localhost:8889/'
},
...
后台没有路由
假设你是在本地调试,并且是通过 http://127.0.0.1:8000/xx.html 来访问你的网页。
那么,需要在服务端代码中添加路由。
//服务端
const express = require('express');
const app = express();
app.use(express.static(__dirname));
// 添加这段路由代码
app.get('/json/example.json', function(req, res, next){
res.json({ret_code: 0});
});
app.listen(8000);
console.log('server running');