Как показать HTML-теги, преобразованные PHP htmlentities в div с использованием jQuery? - PullRequest
0 голосов
/ 05 февраля 2010

У меня есть динамическая строка из PHP, которую я закодировал с помощью htmlentities (), поэтому я могу передать ее в AJAX с помощью jQuery и JSON. Теперь я получил что-то вроде

{ "error": "false", "html": "<div id="user_add_title">Adding New User<div class="showhide-div"><a class="hideShowToggle" href="#" onclick="$('#account_title').show();$('#account').show();$('#users_container').html('')">[cancel]</a></div></div>" }

и когда я хочу показать его в функции обратного вызова AJAX, например:

success: function(json) {
    if(json.error == 'false')
        $("#users_container").html(json.html);
    else
        showMsg(json.msg);
}

что отображается в самих сущностях

<div id="user_add_title">Adding New User<div class="showhide-div"><a class="hideShowToggle" href="#" onclick="$('#account_title').show();$('#account').show();$('#users_container').html('')">[cancel]</a></div></div>

вместо отображения в браузере.

Если я использую html или текст в качестве dataType в своем вызове jQuery AJAX, теги отображаются правильно. Я хочу использовать JSON, потому что мне нужно отлавливать, если в процессе есть ошибка или нет.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2010

Я решил это! Вместо использования PHP htmlentities (), который преобразует знаки «больше» и «меньше», а также кавычек, я просто использовал addlashes () только для преобразования (или добавления обратной косой черты) символов, которые нуждаются в обратной косой черте, такой как кавычки.

Я выяснил, что именно из-за кавычек json не был проанализирован правильно, и поэтому я в первую очередь использовал htmlentities, полагая, что преобразование всего решит эту проблему. Спасибо за ваш ценный вклад.

0 голосов
/ 05 февраля 2010

Вам не нужно кодировать собственную разметку с htmlentities при передаче ее в jQuery. Просто удалите звонок на htmlentites() и отправьте размеченный HTML.

Исключение составляют случаи, когда некоторая часть кода содержит текст, предоставленный пользователем. В этом случае вы должны htmlencode () этот текст и оставить его закодированным, даже когда он добавлен к элементу DOM для отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...