0

我是学习 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(我已禁用跨域策略以在本地计算机上进行测试):

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 请求似乎工作正常。我肯定错过了什么。

谢谢,夏安。

4

2 回答 2

2

You need to include HTTP in your URL when you issue the POST:

xhr.open('POST', 'http://localhost:8888/hello', true);
于 2012-08-22T20:38:10.370 回答
1

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

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

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

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

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

python -m SimpleHTTPServer

我经常使用它,以至于我实际上给它起了别名:

alias www='python -m SimpleHTTPServer'
于 2012-08-22T19:45:04.813 回答