我是新手学习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。
答案 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'