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

标签 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(本地主机)上完成。

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/');
  1. Node.js 请求对象没有请求正文作为纯文本。它需要由 data event 中的 block 处理.
  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);

关于javascript - AJAX 发送数据到 Node.js 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318694/

相关文章:

javascript - 希望获得不断变化的 LocalStorage 值

javascript - 单击事件第一次不起作用

node.js - Mongoose 查找与执行。如何返回值?

javascript - 处理 REST API 中的 native 对象

javascript - 如何使用cheerio提取文本

javascript - React - 将api调用结果返回给原始函数

JavaScript 以及为什么大写字母有时有效有时无效

javascript - 用页面加载百分比填充透明 Logo

php - 向 php 页面发送请求,然后使用 ajax 返回结果

jquery - 如何强制 JQuery 发出 HTTP 1.0 请求并关闭连接