我正在将我的工作从旧环境迁移到新环境。我正在用较新的代码更新过时的代码,它似乎运行良好(我的 web 服务是用 node.js 编写的)
我的 web 服务在 node.js 中运行,我的网站使用 jquery。node.js 代码
var express = require('express');
var app = express();
app.get('/', function(req, res){
console.log('GET request to /');
});
app.listen(8888);
console.log('Express server started on port 8888');
这是我的jQuery代码
$.getJSON('http://URL:8888/getTables', function(data){
//stuff
});
但是在萤火虫控制台显示:
"http://URL.com:8888/getTables 200 OK 64ms"
没有回应
如果我直接访问网站“http://URL.com:8888/getTables”,我会得到我的数据。
任何想法发生了什么?我会让 Web 服务继续运行,这样你就可以看到我在说什么。
使用它的网站是http://www.URL.com/db/index.html
编辑:
app.get('/getTables', function(req, res){
console.log('GET request to /getTables');
getTables(req, res);
sendJSON(res, 200, cache_tables);
});
function sendJSON(res, httpCode, body)
{
var response = JSON.stringify(body);
res.send(response, {'Access-Control-Allow-Origin': '*'}, httpCode);
}
更新
我找到了我的解决方案,感谢您让我知道我的问题是跨域的,我认为我的 sendJSON 已经解决了它,但是由于我升级了 nodejs 和模块,它可能已经过时了。这是为那些想知道的人提供的解决方案:
//Middleware: Allows cross-domain requests (CORS)
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
//App config
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: 'secret' }));
app.use(express.methodOverride());
app.use(allowCrossDomain);
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
我不得不更新我所有的使用方法:
app.get('/', function(req, res, next){
console.log('GET request to /');
});