Diazo добавляет нежелательный HTML-заголовок в ответ JSON - PullRequest
6 голосов
/ 22 сентября 2011

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

Проверка ответа 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>

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

Что следуетЯ делаю, чтобы обойти это?

Спасибо

Ответы [ 2 ]

8 голосов
/ 22 сентября 2011

Чтобы избежать такого поведения, вы должны добавить в ваш 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. вы уже указали "Content-type" вывода в ваше мнение JSON? Как это:

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

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

0 голосов
/ 06 февраля 2015

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

...