我是 Ajax 和 MongoDB 的初学者。我希望使用 Web 浏览器(目前在同一主机上运行)可视化 MongoDB 中的一些数据。为此,我认为可以使用 XMLHttpRequests 获取数据。我正在使用 --rest 选项运行 MongoDB,并检查了当我在 Firefox 上加载 hxxp://localhost:28017/test_db/ss_test/ 时,我得到了正确的回复(一个 JSON 文档,其中包含 ss_test 集合中的数据test_db 数据库)。到目前为止,一切都很好。
然后,我编写了以下 JavaScript 函数,将其连接到按钮的“onclick”:
function makeRequest()
{
var myrequest = new XMLHttpRequest();
myrequest.onreadystatechange = function()
{
alert("status=" + myrequest.status + " readyState=" + myrequest.readyState)
if (myrequest.status == 200 && myrequest.readyState == 4)
{
// ...do something with the response
}
}
myrequest.open("GET", "http://localhost:28017/test_db/ss_test/", true);
myrequest.send();
}
因此,当我在 Firefox 上加载 html 文件时,打开控制台并单击我的按钮,我看到确实发出了 http 请求,状态代码是“HTTP/1.0 200 OK”,并且响应内容长度:219257已发货,看起来很棒。但是,XMLHttpRequest 对象不报告 status=200。当 readyState 逐渐变为 1、2 和 4 时,弹出的警报会报告一个恒定的状态 0,而我的 if 语句永远不会为真。
谁能告诉我我做错了什么?一开始我以为是因为我的 html 是通过文件协议加载到浏览器上的,或者我看到了一些与同源策略相关的问题,但后来我将 html 文件放在 localhost 上的 Web 服务器上并从那里加载什么都没有改变。非常感谢您的任何回复!