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

Using node.js and express to process a POST request

本文关键字:处理 POST 请求 express node js 使用      更新时间:2023-09-26

我是AJAX的新手,也是web开发的新手,我的本地服务器和远程服务器处理post请求时遇到了问题。我使用的是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(我已经禁用了在本地机器上测试的跨源策略):

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请求,以及其他像我上面那样显示发送post请求的教程。

发送和处理GET请求似乎运行良好。我一定是错过了什么。

谢谢,Xaan。

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

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

XHR如果调用js不是由Web服务器提供服务,则不起作用。

你应该做的是在你的快递服务器上添加一个简单的路线

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

其中index.html包含测试代码。

如果你想从不同的网络服务器进行测试,并面临令人讨厌的跨源策略,你也可以使用这个超级有用的命令在你当前的文件夹中生成一个网络服务器:

python -m SimpleHTTPServer

我经常使用它,所以我实际上给它取了个别名:

alias www='python -m SimpleHTTPServer'