Я пытаюсь динамически создавать div для отображения сообщений об ошибках с помощью jquery. Я могу использовать append () для создания HTML достаточно легко, но мне нужно вызвать переменную php для отображения содержимого. Если я просто попробую добавить теги открытия и закрытия php, как обычно, метод append не будет вести себя так, как ожидалось, и выведет на первый взгляд случайный раздел из середины строки. Как я могу решить эту проблему?
Вот код jquery, который у меня есть:
$(document).ready(function() { var errors_php = "<?php echo validation_errors('<li>','</li>'); ?>"; $('#wrapper').append("<div id='errors'><ul>"+errors_php+"</ul></div>"); $('#errors').slideDown('slow'); });
Примечание. Функция validation_errors () является методом codeigniter. Кстати, если я удалю переменную errors_php из append (), она работает как ожидалось, показывая пустой div.
РЕДАКТИРОВАТЬ:
Сгенерированный код:
<div id="errors"><ul>',''); ?></ul></div>
Согласно вашему комментарию:
Я только что поднял этот вопрос, и это именно то, что я пытаюсь сделать. К сожалению, я не понимаю из ответов, как они это решили. Раньше я никогда не использовал данные json. Где я должен поместить этот фрагмент кода?
Данные JSON – это просто обозначение объекта JavaScript, поэтому, если вы установите переменную JavaScript в значение JSON, она по существу воссоздает копию объекта, который был сначала сериализован в JSON.
var errors_php = "<?php echo validation_errors('<li>','</li>'); ?>";
должно быть:
var errors_php = <?php echo json_encode(validation_errors('<li>','</li>')); ?>;
Убедитесь, что выход из PHP правильно экранирован. Если у вас есть котировочная метка (") в коде ошибки, это вызовет проблемы. Попробуйте обернуть validation_errors
с помощью addslashes
:
$(document).ready(function() { var errors_php = "<?php echo addslashes(validation_errors('<li>','</li>')); ?>"; $('#wrapper').append("<div id='errors'><ul>"+errors_php+"</ul></div>"); $('#errors').slideDown('slow'); });