我试图通过单击按钮进行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);
});
}
答案 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');