jquery ajax成功事件处理程序未被调用

时间:2013-02-10 21:51:52

标签: node.js jquery client-side

  • Node.js(express)web server
  • Web服务器中的请求处理程序
app.get('/documents/ajax/:id.:format?', function(req, res) {
   console.log ('Request Received');
   var body = 'hello world';
   res.writeHead(200, {
    'Content-Length': body.length,
    'Content-Type': 'text/plain'
   });

})
  • 来自客户端javascript的ajax请求
  $.ajax({
    url : "/documents/ajax/" + item,
    success : function(msg) {
      alert ("success" + msg);
    },
    error : function(request, status, error) {
      alert("Error, returned: " + request);
      alert("Error, returned: " + status);
      alert("Error, returned: " + error);

    }
  });
  • 我能够在服务器端收到请求并发送4个请求

但我的成功事件并未在客户端JS中被调用。此外,当我停止我的Web服务器时,我看到我的错误处理程序被调用。

请帮忙。

2 个答案:

答案 0 :(得分:1)

主要问题是您没有结束响应,因此服务器实际上从未向客户端发送任何内容。服务器应该使用文件,重定向,某些文本等进行响应。您需要使用res.endres.sendres.sendfileres.redirect完成回调, res.render ...请参阅docs

此外,使用快递您需要使用res.set来设置http标头:

app.get('/documents/ajax/:id.:format?', function(req, res) {
   console.log ('Request Received');
   var body = 'hello world';
   res.set({'Content-Type': 'text/plain'});
   res.send(body);
});

200是默认的响应代码,因此您无需指定该代码,并且将为您计算长度。通过curl

从命令行调试这些内容通常更容易
curl http://localhost:3000/documents/ajax/1

curl -I http://localhost:3000/documents/ajax/1

答案 1 :(得分:1)

我不得不在服务器请求处理程序中重新生成。之后,我能够在客户端JS

中生成成功事件