Node.js为什么我没有从HTTP服务器获取响应文本?

时间:2011-12-01 04:32:25

标签: jquery node.js

我刚开始玩Node.js.我有一个简单的测试设置。

    var sys = require('util'),
http = require('http'),
qs = require('querystring');

http.createServer(function (req, res) {

    if (req.method == 'POST') {
        var body = '';
        req.on('data', function (data) {
            body += data
        });

        req.on('end', function () {
            var POST = qs.parse(body);
            console.log(POST);
        });
    }


    res.writeHead(200, {'Content-Type': 'text/plain'});

    res.end('success');


}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

我的测试客户端JS

 $.post("http://127.0.0.1:1337", "This is my POST data.", function (data) {
        alert(data);
    });

    $.get("http://127.0.0.1:1337", function (data) {
        alert(data);
    });

如果我浏览到运行HTTP服务器的地址:http://127.0.0.1:1337我看到响应文本“成功”。

然而,当我使用$ .post或$ .get时,它们都以200的状态成功但没有响应。永远不会调用$ .get和$ .post回调函数,我看不到出现警报。我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

它对我来说似乎很好。你是如何测试的?

尝试使用curl:

curl -XGET http://localhost:1337/

并发布:

curl -XPOST -d foo=bar http://localhost:1337/

要注意的一件事是,无论POST的输入是什么,您如何使代码返回'成功'。如果您需要处理/查看首先发布的数据,则需要在调用req.on('end',...)之后发送响应。 (或者在那个功能中)。