2010-08-02 17 views
5

Tôi gặp vấn đề với AJAX, CouchDB và JavaScript.Kết nối AJAX, CouchDB và JavaScript

tôi có thể mở URL sau từ CouchDB trong trình duyệt của tôi: 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); 
    } 
}); 

tôi luôn luôn nhận được cảnh báo có sản phẩm nào.

Bạn có thể giúp tôi không?

Trả lời

3

AJAX không hỗ trợ tập lệnh tên miền chéo. tất cả các cuộc gọi cần phải là một URL có cùng tên miền với tên miền của tài liệu hiện tại. một giải pháp tốt sẽ là xây dựng một dịch vụ proxy ở phía máy chủ, sẽ thực hiện yêu cầu địa phương, thực hiện cuộc gọi HTTP đến máy chủ couchDB và trả về phản hồi của nó.

5

Vấn đề ở đây là trình duyệt của bạn không cho phép bạn thực hiện truy vấn trên một máy chủ web khác với truy vấn bắt nguồn từ tập lệnh. (Google cho: Chính sách Xuất xứ Tương tự)

Nhưng có một loại kỹ thuật phổ biến là giải pháp cho trường hợp sử dụng này. Nó được gọi là JSONP. Kể từ phiên bản 1.0, bạn phải kích hoạt chức năng này trước tiên trong CouchDB. Trong phần [httpd] của tập tin cấu hình CouchDB của bạn (.ini), bạn cần phải thêm một

allow_jsonp = true

Sau này được thực hiện, bạn có thể tạo ra các truy vấn JSONP trên CouchDB của bạn. Về cơ bản, thêm các dòng động như sau:

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

Nhưng để biết chi tiết, tham khảo bài viết được liên kết ở trên.

Dù sao, tôi đề xuất về mặt JavaScript của mọi thứ để sử dụng Khung làm jQuery, DojoToolKit, vv. Trong jQuery, ví dụ: nó là đủ để thêm "? callback =?" ở cuối URL.

+0

Cảm ơn bạn. Điều đó đã hiệu quả! Btw, couchdb của tôi được lưu trữ bởi iriscouchcom – edt

Các vấn đề liên quan