使用NodeJS Ajax请求处于待处理状态

时间:2018-10-06 16:40:38

标签: node.js ajax express

我试图通过单击按钮进行ajax调用...但是调用没有到达节点层。 HTML标记: 显示最新的手机

app.js:

var employee = new Employee();
employee.SetDate(new Date(3, 9, 1986));

server.js

function postDetails() {
    $.post('/api/users', {data: 'blah'}, function (data) {
        console.log(data);
      });
}

3 个答案:

答案 0 :(得分:1)

您没有很好地使用Node / Express。如果您想使用jQuery和Node.js进行请求/响应,则可以采用以下方式:

var express = require('express');
var app = express();

var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(express.static('public'));

app.get('/', function(req, res, next) {
  res.sendFile(__dirname + '/index.html');
});

app.post('/api/users', function (req, res, next) {
  res.json(req.body);
});

app.listen(3000, function() { console.log('App running'); });

上面的代码是使用express的简单node.js服务器。在客户页面index.html下方:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title></title>

</head>
<body>
  <button id="clickme">click me</button>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script>
    $('#clickme').on('click', function(e) {
      e.preventDefault();
      $.post('/api/users', {data: 'blah'}, function (result) {
        console.log(result);
      });
    });
  </script>
</body>
</html>

此index.html页应位于public文件夹中。您可以参考另一个堆栈溢出问题以获取更多详细信息:here

答案 1 :(得分:1)

我认为这是因为您正在使用 http 创建服务器和侦听请求,并尝试使用 app (假设Express对象)处理路由。

因此,您应该在 http.createServer的回调函数中编写路由代码,如下所示-

http.createServer(function(req, res){
  if(req.url == '/api/users' req.method === 'POST'){
    //your code here
  }
});

或者您应该使用app(快速方式)创建服务器

答案 2 :(得分:0)

尝试一个简单的处理程序来验证您的假设:

console.log('BEGIN');
if (req.method === 'POST' && req.url == '/api/users') {
      console.log('SUCCESS');
    }
console.log('END');