AJAX发送数据到Node.js服务器
我试图用AJAX发送数据到一个Node.js服务器,但不断碰到同样的问题,接待。
这是客户端JavaScript / AJAX代码:
var objects = [ function() { return new XMLHttpRequest() }, function() { return new ActiveXObject("MSxml2.XMLHHTP") }, function() { return new ActiveXObject("MSxml3.XMLHHTP") }, function() { return new ActiveXObject("Microsoft.XMLHTTP") } ]; function XHRobject() { var xhr = false; for(var i=0; i < objects.length; i++) { try { xhr = objects[i](); } catch(e) { continue; } break; } return xhr; } var xhr = XHRobject(); xhr.open("POST", "127.0.0.1:8080", true); xhr.setRequestHeader("Content-Type", "text/csv"); xhr.send(myText); console.log(myText);
出于某种原因,您可以在http://nodejs.org/api/http.html上获得的基本HTTP服务器导致ECONNREFUSED
错误(即使使用sudo和端口8080),所以我尝试了这个简单的代码:
var http = require('http'); http.createServer(function(req, res) { console.log('res: ' + JSON.stringify(res.body)); }).listen(8080, null)
但它保持打印res: undefined
。
另一方面, AJAX
POST
似乎不会在控制台中触发任何错误。
所以我的问题是否如下:
- 我怎样才能有一个简单但坚实的node.js服务器,可以检索由
AJAX
POST
请求发送的文本?
先谢谢你 !
编辑:testing是在127.0.0.1
(本地主机)上完成的。
EDIT2:这是更新的Node.js代码:
var http = require('http'); var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(); req.on('data', function(data) { console.log(data); }) }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
看看http://nodejs.org主页上的例子。
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
- Node.js请求对象没有以纯文本forms请求主体。 它需要由
data
事件处理块。 - 您需要用res.end结束请求才能将响应发送给客户端。
更新:
此代码应该正常工作:
var http = require('http'); http.createServer(function (req, res) { var body = ''; req.on('data', function(chunk) { body += chunk.toString('utf8'); }); req.on('end', function() { console.log(body); res.end(); }); }).listen(8080);