使用node.js和express来处理POST请求

时间:2012-08-22 19:39:56

标签: javascript http node.js post express

我是新手学习AJAX并且刚接触Web开发,我在使用本地服务器和远程服务器处理发布请求时遇到问题。我正在使用node.js和express模块​​。

以下是我服务器的代码:

var express = require('express');

//start server
var app = express.createServer();

//handle requests
app.post('/hello', function(req, res){
    res.send("hello");
});

app.listen(8888);

非常基本,我知道。为了测试这个,我通过Chrome中的控制台手动创建了一个XMLHttpRequest(我已经禁用了Cross-Origin策略以在我的本地机器上进行测试):

var xhr = new XMLHttpRequest();
xhr.open('POST', 'localhost:8888/hello', true);
xhr.send('name=me'); //body of request is irrelevant at this point

当我将请求发送到我的本地计算机时,它立即返回并说它失败了。当我将请求发送到我的远程服务器(其中 localhost 被我的服务器的IP替换)时,我没有在我的控制台中收到错误,但是当我检查xhr对象的状态失败时。

我不知道问题是我的服务器编写方式,还是我向服务器发送请求的方式。但是,我一直在查看教程和示例,这些教程和示例显示了如上所述的快速处理发布请求,以及其他显示发送POST请求的教程,如上所述。

发送和处理GET请求似乎工作正常。我一定错过了什么。

谢谢,Xaan。

2 个答案:

答案 0 :(得分:2)

发布POST时,您需要在URL中包含HTTP:

xhr.open('POST', 'http://localhost:8888/hello', true);

答案 1 :(得分:1)

如果网络服务器没有提供呼叫js,则XHR不起作用。

您应该做的是在Express服务器上添加一个简单的路线

app.get('/', function( req, res) {
  res.sendfile('index.html');
})

index.html包含您的测试代码。

如果您想从不同的网络服务器进行测试并遇到恼人的跨域策略,您还可以使用此超级有用的命令在当前文件夹中生成网络服务器:

python -m SimpleHTTPServer

我经常使用它,实际上我对它起了别名:

alias www='python -m SimpleHTTPServer'