【发布时间】:2012-01-27 17:55:24
【问题描述】:
我正在尝试将 session 与 expressjs 和 jquery 一起使用。
我有一个 node.js 服务器 @127.0.0.1:6060 使用此代码:
var Express = require('express'),
App = Express.createServer(),
Mongoose = require('mongoose'),
Schema = Mongoose.Schema,
ObjectId = Schema.ObjectId;
App.configure(function () {
App.use(Express.bodyParser());
App.use(Express.methodOverride());
App.use(Express.logger({ format: '[:remote-addr] :method :url :response-time ms' }));
App.use(Express.cookieParser());
App.use(Express.session({ secret: "keyboard cat" }));
// CORS
App.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,POST,PUT,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With');
next();
});
});
App.all('/api/users/test1', function (req, res) {
req.session.test = 'toto';
console.log(req.session.id)
res.send({'r': req.session.id});
});
App.all('/api/users/test2', function (req, res) {
console.log(req.session.id)
res.send({'r': req.session.test});
});
App.listen(6060, '127.0.0.1');
console.log('App launched ...');
好的,现在如果我在浏览器中直接输入http://127.0.0.1:6060/api/users/test1 然后http://127.0.0.1:6060/api/users/test2,我会得到带有“toto”的对象结果。
但是,如果我尝试使用 jquery 1.7.1:
$.getJSON('http://127.0.0.1:6060/api/users/test1', function (json) {
console.log(json.result);
$.getJSON('http://127.0.0.1:6060/api/users/test2', function (json) {
console.log(json.result)
});
});
我在最后一次打印中得到一个空的 js 对象。 我真的不明白。有什么想法吗?
谢谢!
【问题讨论】:
标签: jquery session node.js express