我正在尝试从JavaScript调用CouchDB列表。
我的jQuery调用是:
var listItems = $.couch.db('foo').list('foo/barList', 'foo/barView');
如果我在加载了jquery.couch.js的页面(如Futon)上在FireBug控制台中测试它,它会返回我想要的内容(带有相应数据的多个<input>
标签填充)。
但是,当我从代码中调用它时,我收到错误:
An error occured accessing the list: Invalid JSON: [the html]
...其中[the html]
是我想在脚本中操作的html。我不明白为什么我收到JSON错误 - 我认为列表的重点是返回HTML。有没有办法强制它将我的HTML返回给我?
另外,我的列表功能包括以下内容,所以我不确定为什么这不起作用。
start({
"headers": {
"Content-Type": "text/html"
}
});
答案 0 :(得分: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;
}
如果我遗漏了某些内容,我欢迎有关如何更有效地执行此操作的建议,但这对我有用。