【发布时间】:2011-06-04 20:05:52
【问题描述】:
我无法弄清楚为什么我无法检索 jquery ajax 调用发送的 node.js 中的表单输入值:
这里是客户端的 jQuery 代码:
$('#send-button').click(function(event) {
event.preventDefault();
var str = $('#form-contact').serialize();
$.ajax({
type: 'POST',
url: "contact",
data: str,
success: function(msg) {
....
},
error: function(XMLHttpRequest, textStatus) {
....
}
})
现在在 node.js 中,我尝试检索 jQuery ajax 请求发送的数据:
var sys = require("sys"),
http = require("http"),
url = require("url"),
path = require("path"),
qs = require('querystring'),
fs = require("fs"),
var server = http.createServer(function(request, response) {
.....
path.exists(filename, function(exists) {
if(!exists) {
if (paramUri == "/contact") {
if (request.method == 'POST') {
var body = '';
request.on('data', function(chunk) {
body += chunk;
});
request.on('end', function() {
console.log(body);
})
}
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('worked');
return;
}
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not Found\n");
response.end();
return;
}
......
});
})
server.listen(8080);
但 request.on('data') 和 request.on('end') 永远不会被调用。我正在使用 node.js -v 0.2.6
【问题讨论】:
-
我想不出任何可以通过查看代码来破坏这一点的东西,响应是否正常工作?您是否检查过是否实际添加了侦听器?如果您可以向我们提供更多信息或发布完整代码以便我们进行测试,那就太好了。 PS:你的编码风格很不一致。
-
顺便说一句,标识符
XMLHttpRequest已经被使用(在浏览器中)。不要将其用作参数名称。改用xhr(例如) -
@Ivo 我现在不关心编码风格,我只是在试验 node.js 并尝试解决我的问题。顺便说一句,这段代码主要来自教程。 @response 是的,它有效,客户端收到字符串“worked”