Express似乎没有响应我的ajax请求。当我在chrome检查器的网络选项卡中查看并且失败时,帖子请求状态似乎很长时间未决。这是我的明确代码:
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.cookieParser());
app.use(express.session({secret: 'fasfasasasfasfa'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.session());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.post('/test.html', function (req,res) {
console.log(req.body);
res.send({ some: JSON.stringify({response:'json' })});
res.end();
})
这是我的jQuery代码:
working = function() {
console.log("works")
}
$.ajax({
url:"test.html",
data: {'name':'hello'},
type: "POST",
success: working
})
永远不会调用成功函数,并且req.body的控制台日志似乎也不起作用。
感谢您的帮助!
答案 0 :(得分:2)
正如您在评论中提到的,您的状态代码为0。
Does an HTTP Status code of 0 have any meaning?
检查以确保您可以从您正在测试的位置访问服务器,并且您发出请求的URL实际上指向您要将请求发送到的服务器。
换句话说,您可能需要修复此行
url:"test.html",
答案 1 :(得分:2)
您不能在Express中的路由上使用.html
扩展名,因为这会让它认为它正在寻找静态资源。请改用“漂亮网址”。
// Express code...
app.post('test', function(req, res, next){
// Do stuff to process POST request
});
// AJAX code...
$.ajax({
url: 'test',
...
});
希望有所帮助!