0

我是 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 服务器上并从那里加载什么都没有改变。非常感谢您的任何回复!

4

1 回答 1

0

您需要创建一个函数来处理请求。

http://www.ibm.com/developerworks/web/library/wa-ajaxintro2/

http://www.ibm.com/developerworks/library/wa-ajaxintro3/

function makeRequest()
{
  var myrequest = new XMLHttpRequest();
  myrequest.onreadystatechange = create_this_function()
  {

  }    
myrequest.open("GET", "http://localhost:28017/test_db/ss_test/", true);
myrequest.send();
}
#
function create_this_function()
{
    alert("status=" + myrequest.status + " readyState=" + myrequest.readyState)
    if (myrequest.status == 200 && myrequest.readyState == 4)
    {
      // ...do something with the response
    }
}
于 2013-09-19T16:17:36.763 回答