对AJongDB的REST AJAX请求

我正在尝试将XMLHttpRequest发送到mongoDB以通过AJAX检索文档。

这是我的代码:

 function getJsonDocumentByModeldid(model_id) { var valoreInput = document.getElementById('inputModelId').value; alert(valoreInput); $.ajax({ url: "http://localhost:28017/test/", type: "get", //data: "filter_a=" + valoreInput, dataType: 'jsonp', crossDomain: true, success: function (data) { alert("success"); //var json2javascript = $.parseJSON(data); manageLayout(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Status: " + textStatus + " Error:" + errorThrown); } }); } 

我的函数总是返回错误。 那么问题是什么?

此function作为Simple(只读)REST接口的一部分受支持,但是为了使跨域请求成为--jsonp否则您将受到同源策略问题的影响,因为您正在发出请求的IP地址和端口from与运行mongoDB的IP地址和端口不匹配。

使用mongod.exe --rest --jsonp启动mongoDB mongod.exe --rest --jsonp (以及您可能拥有的任何其他选项)。

以下示例页面可以通过Web服务器(例如Apache HTTP Server )提供,或者只是本地保存并作为文件加载到浏览器中。 请求是关于名为andyb的dbCollection的信息 ,我首先在mongoDB中创建了:

 db.createCollection('andyb'); 

HTML

     mongoDB AJAX demo       

许多浏览器现在支持CORS ,这是一种促进跨域资源的替代(更现代)方式。

可以使用延迟对象修改上一个答案(请参阅此优秀指南:“ 如何从异步调用返回响应? ):

   mongoDB AJAX demo    
   

无论如何,在两种情况下, error:fail()处理仅在未提供端口时才起作用。 例如:

 url:"localhost/asdasdasd" 

导致error handling; 而

 url:"localhost:28017/asdasdasd" 

导致控制台中的404日志,如下所示:

 GET http://localhost:28017/?jsonp=jQuery110207253803350031376_1383522587177&_=1383522587178 404 (OK)