AJAX将数据发送到Node.js服务器

时间:2012-11-10 02:36:51

标签: javascript ajax node.js http

我正在尝试使用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请求发送的文字?

提前谢谢!

编辑:测试在127.0.0.1(localhost)上完成。

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/');

1 个答案:

答案 0 :(得分:3)

查看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/');
  1. Node.js请求对象没有以纯文本形式请求正文。它需要由data event
  2. 中的数据块处理
  3. 您需要使用res.end结束请求以向客户端发送响应。
  4. <强>更新

    此代码应该可以正常工作:

    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);