2010-08-02 10 views
5

Tengo un pequeño problema con AJAX, CouchDB y JavaScript.Conexión AJAX, CouchDB y JavaScript

puedo abrir la siguiente URL de CouchDB en mi navegador: 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); 
    } 
}); 

consigo siempre alerta vacía.

¿Me puede ayudar?

Respuesta

3

AJAX no admite scripts de dominio cruzado. todas las llamadas deben estar en una URL con el mismo dominio que el del documento actual. una buena solución sería crear un servicio proxy en el servidor, que tomará la solicitud local , realizará una llamada HTTP al servidor couchDB y devolverá su respuesta.

5

El problema aquí es que su navegador no le permite hacer una consulta en otro servidor web que el que origina el script. (Google para: Política del mismo origen)

Pero hay una clase de técnica común que es una solución para este caso de uso. Se llama JSONP. Desde la versión 1.0, primero debe activar esta funcionalidad en CouchDB. En la sección [httpd] del archivo de configuración CouchDB (ini) que hay que añadir un

allow_jsonp = true

Una vez hecho esto se puede producir consultas JSONP en su CouchDB. Básicamente la adición de líneas dinámicamente como esta:

<script type="text/javascript" 
    src="http://server2.example.com/getjson?callback=parseResponse"> 
</script> 

Pero para los detalles, consulte el artículo vinculado anteriormente.

De todos modos propongo en el lado de JavaScript de cosas para usar un Framework como jQuery, DojoToolKit, ect. En jQuery, p. es suficiente agregar "? callback =?" al final de la URL.

+0

Gracias. ¡Eso funciono! Por cierto, mi couchdb está alojado por iriscouchcom – edt

Cuestiones relacionadas