Diazo добавить нежелательный заголовок html в ответ json

У меня есть пустой сайт Plone 4.1, на котором установлен только коллективный.quickupload. Портлет загрузки работал нормально, пока я не установил plone.app.theming и не применил свою тему. Файлы все равно были загружены, но веб-клиент получил статус «Failed».

Изучив ответ ajax с сервера, я обнаружил, что они были обернуты заголовком html. Старый ответ (перед установкой диазо и применением моей темы) был просто

{"success":true}

Новый ответ (после установки диазо и применения моей темы) был заключен в тег 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>

Я вставил сюда свой файл rule.xml (ничего особенного, есть только одно правило, обусловленное css:if-content="#visual-portal-wrapper"): http://pastebin.com/SaK13Fni

Что я должен сделать, чтобы обойти это?

Спасибо


person quyetnd    schedule 22.09.2011    source источник


Ответы (2)


Чтобы избежать такого поведения, вы должны добавить исключение в свой rules.xml, указывающее, что ваша тема не применяется к вашему конкретному представлению, например:

<notheme if-path="myjson_view"/>

изменить:

Я пробовал с одной из моих тем диазо и представлением json, и у меня не было вашей проблемы. Поэтому я думаю, что проблема либо в вашем rules.xml, либо в вашем представлении json. Вы должны попробовать один из этих двух способов:

  1. измените свой rules.xml таким образом:

       <rules
        xmlns="http://namespaces.plone.org/diazo"
        xmlns:css="http://namespaces.plone.org/diazo/css"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
        <!-- Prevent theme usage in zmi-->
        <rules css:if-content="#visual-portal-wrapper">
            <theme href="index.html" />
        </rules>
    
  2. Вы уже указали «тип контента» вывода в представлении json? Нравится:

    self.request.response.setHeader("Content-type","application/json")
    return json_data
    

    Если нет, то, вероятно, проблема в этом.

person Giacomo Spettoli    schedule 22.09.2011
comment
Жаль, что не сработало. Я пробовал добавить ‹notheme› внутри корневых правил с помощью css:if-content=#visual-portal-wrapper или снаружи (обернуть другим тегом правил). Я думаю, проблема в том, что заголовок добавляется перед всеми преобразованиями, чтобы убедиться, что он соответствует синтаксису xhtml. - person quyetnd; 22.09.2011
comment
Я понимаю. Я попытался воспроизвести вашу ошибку и поэтому отредактировал свой ответ. - person Giacomo Spettoli; 22.09.2011
comment
Ответ 2 здесь правильный. В следующем выпуске plone.app.theming страницы ZMI никогда не будут тематизированы. - person Laurence Rowe; 22.09.2011
comment
Спасибо, ребята, проблема заключалась в том, что для типа контента был установлен текст/html, что делает всю обертку ожидаемой/хорошей. Дополнительное примечание (не связанное с проблемой): установка типа содержимого обратно в application/json (или text/plain, text/json, что угодно/что угодно) делает html-версию портлета multiupload коллективным.quickupload не работает в IE. Откатился на флеш версию. - person quyetnd; 26.09.2011

Остерегайтесь использования инспектора Chrome... он добавляет теги html head и pre вокруг вашего json, когда вы его проверяете... на самом деле его нет, если вы посмотрите на представление: источник страницы (старая школа)...

person Aaron Williams    schedule 06.02.2015