CouchDB列表“访问列表时出错:无效的JSON”错误

时间:2012-03-01 19:21:36

标签: couchdb

我正在尝试从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"
      }
     });

1 个答案:

答案 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;
    }

如果我遗漏了某些内容,我欢迎有关如何更有效地执行此操作的建议,但这对我有用。