Plone Diazo将不需要的html头添加到json响应中

Plone Diazo将不需要的html头添加到json响应中,plone,diazo,Plone,Diazo,我有一个空白的Plone 4.1站点,只安装了collective.quickupload。在我安装plone.app.theming并应用我的主题之前,上传portlet工作正常。文件仍在上载,但web客户端处于“失败”状态 检查来自服务器的ajax响应时,我发现它们是由html头包装的。 以前的反应(在安装diazo和应用我的主题之前)很简单 {"success":true} 新的响应(在安装diazo和应用我的主题之后)被一个html标记包装: <!DOCTYPE html PUB

我有一个空白的Plone 4.1站点,只安装了collective.quickupload。在我安装plone.app.theming并应用我的主题之前,上传portlet工作正常。文件仍在上载,但web客户端处于“失败”状态

检查来自服务器的ajax响应时,我发现它们是由html头包装的。 以前的反应(在安装diazo和应用我的主题之前)很简单

{"success":true}
新的响应(在安装diazo和应用我的主题之后)被一个html标记包装:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><body><p>{"success":true}</p></body></html>
{“成功”:true}

我已经在这里粘贴了rule.xml文件(没有什么特别的,只有一条规则受css的约束:if content=“#visual portal wrapper”):

我应该做些什么来解决这个问题


谢谢

要避免这种行为,您必须在
规则.xml
中添加一个异常,指定不将主题应用于特定视图,如下所示:

<notheme if-path="myjson_view"/>
  • 您是否已经在中指定了输出的“内容类型” 你的json视图?像这样:

    self.request.response.setHeader("Content-type","application/json")
    return json_data
    
    如果不是,那可能就是问题所在


  • 小心使用Chrome inspector。。。当您检查json时,它会在json周围添加html头和前置标记……如果您查看view:source of the page(旧版)……它实际上并不存在。

    太糟糕了,它不起作用。我尝试过使用css:if content=“#visual portal wrapper”或outside(使用另一个规则标记包装)添加内部根规则。我认为问题是在所有转换之前添加了头,以确保它遵循xhtml语法。我试图重现你的错误,并编辑了我的答案。答案2在这里是正确的。plone.app.theming的下一个版本将永远不会对ZMI页面进行主题化。谢谢大家,问题是内容类型设置为text/html,这使得整个包装工作达到了预期/良好的效果。附带说明(与问题无关):将内容类型设置回application/json(或text/plain、text/json,随便什么)会使multiupload portlet collective.quickupload的html版本在IE上不起作用。我回到了flash版本。
    self.request.response.setHeader("Content-type","application/json")
    return json_data