Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JQuery的Express和ajax发布_Jquery_Ajax_Node.js_Express - Fatal编程技术网

使用JQuery的Express和ajax发布

使用JQuery的Express和ajax发布,jquery,ajax,node.js,express,Jquery,Ajax,Node.js,Express,Express似乎没有响应我的ajax请求。当我在chrome inspector的“网络”选项卡中查看post请求状态时,它似乎已挂起很长一段时间,然后失败。这是我的快递代码: app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(exp

Express似乎没有响应我的ajax请求。当我在chrome inspector的“网络”选项卡中查看post请求状态时,它似乎已挂起很长一段时间,然后失败。这是我的快递代码:

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
  })    
success函数从未被调用,req.body的控制台日志似乎也不起作用


谢谢你的帮助

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

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

换句话说,您可能需要修复这条线

url:"test.html",

正如您在评论中提到的,您将返回状态代码0

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

换句话说,您可能需要修复这条线

url:"test.html",
不能在Express中的路由上使用.html扩展名,因为这会使它认为它在寻找静态资源。改用漂亮的URL

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

// AJAX code...
$.ajax({
  url: 'test',
  ...
});
希望有帮助

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

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

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

希望有帮助

当请求最终失败时,您会得到什么HTTP状态码?控制台出现故障时是否有任何错误消息?对不起,我对这一点很陌生,不必担心自己是新手。您已经提到了网络选项卡。您应该能够查看其中的请求,在请求完成时确定HTTP状态代码。控制台与运行代码时console.log语句打印到的位置相同。未捕获的异常通常会打印到那里。失败时似乎不会显示任何代码,尽管我在ajax请求中实现了一个错误处理程序,并发送了0的http代码。您的初始化是错误的-您已将静态文件服务器路由放在post rest接收器之前。您的/test.html将首先尝试静态文件,并在到达rest接收器之前失败。你需要在app.post之后移动express.static当请求最终失败时,你会得到什么HTTP状态码?控制台出现故障时是否有任何错误消息?对不起,我对这一点很陌生,不必担心自己是新手。您已经提到了网络选项卡。您应该能够查看其中的请求,在请求完成时确定HTTP状态代码。控制台与运行代码时console.log语句打印到的位置相同。未捕获的异常通常会打印到那里。失败时似乎不会显示任何代码,尽管我在ajax请求中实现了一个错误处理程序,并发送了0的http代码。您的初始化是错误的-您已将静态文件服务器路由放在post rest接收器之前。您的/test.html将首先尝试静态文件,并在到达rest接收器之前失败。你需要在app.post之后移动express.static。我不认为这是问题所在,因为即使我将其更改为完整IP地址,它仍然不起作用。我不认为这是问题所在,因为即使我将其更改为完整IP地址,它仍然不起作用