连接AJAX,CouchDB和JavaScript

Chr*_*ris 5 javascript ajax couchdb prototypejs

我对AJAX,CouchDB和JavaScript有一点问题.

我可以在浏览器中从CouchDB打开以下URL:http://192.168.1.58:5984/mydb/name

new Ajax.Request('http://192.168.1.58:5984/mydb/namee', {
  method: 'POST',
  onComplete: function(transport) {
   alert(transport.responseText);
  }
 });
Run Code Online (Sandbox Code Playgroud)

我总是空洞警惕.

你能帮助我吗?

loo*_*omi 5

这里的问题是,您的浏览器不允许您在脚本来源的其他Web服务器上进行查询.(谷歌:同源政策)

但是有一种常见的技术可以解决这个用例.它叫做JSONP.从版本1.0开始,您必须首先在CouchDB中激活此功能.在CouchDB配置文件(.ini)的[httpd]部分中,您必须添加一个

allow_jsonp = true

完成此操作后,您可以在CouchDB上生成JSONP查询.基本上添加这样的动态线:

<script type="text/javascript" 
     src="http://server2.example.com/getjson?callback=parseResponse">
</script>
Run Code Online (Sandbox Code Playgroud)

但有关详细信息,请参阅上面链接的文章.

无论如何,我建议在JavaScript方面使用框架作为jQuery,DojoToolKit等.在jQuery中,例如添加"?callback =?"就足够了 在URL的末尾.


小智 3

AJAX 不支持跨域脚本。所有调用都必须指向与当前文档具有相同域的 URL。一个好的解决方案是在服务器端构建一个代理服务,它将接受本地请求,对 couchDB 服务器进行 HTTP 调用,并返回其响应。