2012-03-01 50 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; 
    } 

如果我失去了一些东西,我欢迎有关如何更有效地做到这一点的建议,但这对我有效。