2010-07-08 5 views
2

Я пытаюсь динамически создавать div для отображения сообщений об ошибках с помощью jquery. Я могу использовать append() для создания HTML достаточно легко, но мне нужно вызвать переменную php для отображения содержимого. Если я просто попробую добавить теги открытия и закрытия php, как обычно, метод append не будет вести себя так, как ожидалось, и выведет на первый взгляд случайный раздел из середины строки. Как я могу решить эту проблему?append php in jquery

Вот код 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.

EDIT:

Сгенерированный код:

<div id="errors"><ul>',''); ?&gt;</ul></div> 
+1

Что такое сгенерированный код? – MitMaro

+0

Отредактировано официальное сообщение – musoNic80

+1

И что выводится на экран? –

ответ

2

В соответствии с Вашим комментарием:

Я просто посмотрел на этот вопрос и - это именно то, что я пытаюсь сделать. К сожалению, я не понимаю от ответов, как они его решили. Я никогда не использовал данные json раньше. Где я должен положить этот фрагмент кода?

JSON data - это просто обозначение объекта JavaScript, поэтому, если вы установите переменную JavaScript в значение JSON, она по существу воссоздает копию объекта, который был сначала сериализован в JSON.

var errors_php = "<?php echo validation_errors('<li>','</li>'); ?>"; 

должно быть:

var errors_php = <?php echo json_encode(validation_errors('<li>','</li>')); ?>; 
3

Убедитесь, что выход из 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'); 
}); 
+0

Мне нравится ваше мышление, но я просто попробовал и получил тот же результат. В ошибках не должно быть никаких кавычек или чего-либо подобного. – musoNic80

+0

Можете ли вы опубликовать код для 'validation_errors' и какие могут быть некоторые примеры ошибок? – thetaiko

+0

validation_errors() - это функция, которая является частью структуры codeigniter. Он выводит предопределенные сообщения об ошибках после отправки формы, например. обязательное поле пусто и т. д. Проблема не в этой функции, она работает над тем, как получить jquery для отправки браузера php. – musoNic80