首页 > 用nodejs做后台请求ajax失败

用nodejs做后台请求ajax失败

//服务端
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');
【热门文章】
【热门文章】