2012-03-01 56 views
0

我試圖從JavaScript調用一個CouchDB列表。CouchDB列表「訪問列表時發生錯誤:無效的JSON」錯誤

我的jQuery調用是:

var listItems = $.couch.db('foo').list('foo/barList', 'foo/barView'); 

如果我測試這個在Firebug控制檯當我有jquery.couch.js加載(如蒲團)頁面上的返回正是我想要的(幾個<input>標籤與填充適當的數據)。

然而,當我把這個從代碼中,我得到的錯誤:

An error occured accessing the list: Invalid JSON: [the html] 

...其中[the html]是我想在我的腳本來處理的HTML。我不明白爲什麼我會得到一個JSON錯誤 - 我認爲列表的重點是要返回HTML。有沒有辦法強制它將我的html返回給我?

此外,我的列表功能包括以下內容,所以我不知道爲什麼這不起作用。

start({ 
     "headers": { 
     "Content-Type": "text/html" 
     } 
    }); 

回答

0

根據https://issues.apache.org/jira/browse/COUCHDB-1059這是一個公認的錯誤,它已被修補。然而,在上面的頁面中對Jan Lehnardt推薦的jquery.couch.js進行更改後,我不得不做更多的事情。

頁以上建議人們在jquery.couch.js以下變化:

- var resp = httpData(req, "json"); 
+ var resp = httpData(req, dataType); 

出於某種原因,這並沒有爲我工作,但它沒有當我不是用下述內容代替它。理論上可以爲下面的不同類型的內容類型添加處理程序。

var cType = req.getResponseHeader('Content-Type'); 
switch(cType) { 
    case 'text/html': 
     var resp = req.responseText; 
     break; 
    default: 
     var resp = $.parseJSON(req.responseText); 
     break; 
    } 

如果我失去了一些東西,我歡迎有關如何更有效地做到這一點的建議,但這對我有效。