AJAX将数据发送到服务器的Node.js(AJAX sending data to Node.js

2019-08-02 14:03发布

我试图用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服务器http://nodejs.org/api/http.html是造成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 (本地主机)。

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

Answer 1:

再看例如在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 事件 。
  2. 您需要结束与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);


文章来源: AJAX sending data to Node.js server