使用JQuery进行Express和ajax发布

时间:2012-12-02 20:04:57

标签: jquery ajax node.js express

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

感谢您的帮助!

2 个答案:

答案 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',
  ...
});

希望有所帮助!