【发布时间】:2016-05-14 19:31:48
【问题描述】:
我发现了一个非常有用的代码 sn-p on GitHub,它可以在 NodeJS 中提供简单的服务器-客户端通信。
经过一些小的格式化后,我的代码如下所示:
客户端(Jade + Javascript)
head
title jsonp test
script(src='http://code.jquery.com/jquery-1.6.2.min.js')
script(type='text/javascript').
$(function () {
$('#select_link').click(function (e) {
e.preventDefault();
console.log('select_link clicked');
var data = {};
data.title = "title";
data.message = "message";
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
url: 'http://localhost:7776/domaintest',
success: function (data) {
console.log('success');
console.log(JSON.stringify(data));
}
});
});
});
body
#select_div
a#select_link(href='#') Test
服务器(Javascript)
var express = require('express');
var app = express.createServer();
app.use(express.bodyParser());
app.post('/domaintest', function(req, res){
var obj = {};
console.log('body: ' + JSON.stringify(req.body));
res.send(req.body);
});
app.listen(7776);
定义给客户端的路由(有人告诉我这对于服务器来说是不必要的,因为app.post 可以达到目的)
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index');
});
module.exports = router;
结果是一个简单的文本“测试”,可以点击。当我点击时,实际事件应该发生在我从代码中读出的情况下,但安装的浏览器在jquery-1.6.2.min.js:18 中显示POST http://localhost:7776/domaintest 404 (Not Found)。准确地说,错误发生在$.ajax,根据调试器。
由于格式的原因,jQuery 代码实际上是不可读的(不是判断,它可能有它的原因),我需要你的帮助。错误的可能来源是什么?我忘了提什么吗?
【问题讨论】:
-
当您浏览到
http://localhost:7776/domaintest时会发生什么?你的应用在监听吗? -
@cale_b
domaintest实际上是空的。它由一个带有一些小文本的 Jade 页面、没有附加的 JS 脚本和一个路由(不包括渲染输入)完全与我为客户端定义的路由组成。 -
当您在浏览器中输入
http://localhost:7776/domaintest时,您会收到 404 吗? -
@KarlP.Galvez 没有。它工作得很好——另一方面,正如我上面提到的,它没有做任何事情。
-
@ZoltánSchmidt 您的整个应用程序是否在本地主机上运行?如果是这样,请尝试
url: '/domaintest'您可能会遇到 CORS 问题。自从我在 localhost 上进行开发以来已经有一段时间了,所以我可能要离开了。
标签: javascript jquery ajax node.js express