作業を古い環境から新しい環境に移行しています。古いコードを新しいコードで更新している途中で、うまく動作しているようです(node.jsで書かれた私のWebサービス)
node.js で Web サービスを実行し、サイトで 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
});
ただし、firebug では、コンソールに次のように表示されます。
"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 /');
});