добавить php в jquery

Я пытаюсь динамически создавать 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>',''); ?&gt;</ul></div> 

Related of "добавить php в jquery"

Согласно вашему комментарию:

Я только что поднял этот вопрос, и это именно то, что я пытаюсь сделать. К сожалению, я не понимаю из ответов, как они это решили. Раньше я никогда не использовал данные 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'); });