1

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 的控制台日志似乎也不起作用。

谢谢您的帮助!

4

2 回答 2

2

您不能.html在 Express 中的路由上使用扩展,因为这使它认为它正在寻找静态资源。请改用“漂亮的 URL”。

// Express code...
app.post('test', function(req, res, next){
  // Do stuff to process POST request
});

// AJAX code...
$.ajax({
  url: 'test',
  ...
});

希望有帮助!

于 2012-12-03T00:21:19.217 回答
2

正如您在评论中提到的,您得到的状态代码为 0 。

HTTP 状态码 0 是否有任何意义?

检查以确保您的服务器可以从您正在测试的位置访问,并且您发出请求的 URL 实际上指向您要将请求发送到的服务器。

换句话说,您可能需要修复此行

url:"test.html",
于 2012-12-02T22:02:39.847 回答