我试图激活
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); } }); }
解决方法
此功能作为
Simple (read-only) REST Interface的一部分受支持,但要使跨域请求
--jsonp
,否则您将受到
Same origin policy问题的影响,因为您发出请求的IP地址和端口与mongoDB的IP地址和端口不匹配正在运行.
使用mongod.exe启动mongoDB –rest –jsonp(以及您可能拥有的任何其他选项).
以下示例页面可以通过Web服务器(例如Apache HTTP Server)提供,或者只是本地保存并作为文件加载到浏览器中.请求是关于名为andyb的dbCollection的信息,我首先在mongoDB中创建了:
db.createCollection('andyb');
HTML
<!DOCTYPE html> <html> <head> <Meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>mongoDB AJAX demo</title> <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script> <script type='text/javascript'>//<![CDATA[ $(function(){ $.ajax({ url: 'http://localhost:28017/local/andyb',type: 'get',jsonp: 'jsonp',// mongod is expecting the parameter name to be called "jsonp" success: function (data) { console.log('success',data); },errorThrown) { console.log('error',errorThrown); } }); });//]]> </script> </head> <body> </body> </html>