Я разрабатываю инструмент для создания шаблонов, который использует запрос jQuery Ajax, который отправляет параметры в файл PHP. PHP выполняет фактическую генерацию HTML шаблона.
// Send for processing. Expect JS back to execute.
function generate() {
$.ajax({
type: "POST",
url: "generate.php",
data: $('#genform :input').serialize(),
dataType: "script",
beforeSend: function() {
$("#loading").html("<img src='images/loadbar.gif' />");
$("#loading")
.dialog({
height: 80,
width: 256,
autoOpen: true,
modal: true
});
},
success: function(data) {
$("#loading").dialog('close');
}
});
}
Моя проблема в том, что у меня есть ajax dataType: установлено в "script". Используя это, файл PHP генерирует некоторые диалоги jQuery для любых ошибок, которые работают хорошо. Однако после того, как я сгенерировал HTML, у меня возникли проблемы с его передачей.
Итак, у меня есть, вероятно, 100 строк сгенерированного HTML и javascript, с которыми я бы хотел поработать.
В файле PHP я пробовал:
echo('$("#result").html("'.$html.'");');
Это действительно работает, если в $ html НЕТ разрывов строк. Как только возникают разрывы строк, отладчик Chrome сообщает: «gen.html: 1 Uncaught SyntaxError: Неожиданный токен ILLEGAL». Очевидно, что он пытается оценить возвращаемые заголовки ответа, но останавливается при любом разрыве строки.
Итак, чтобы было ясно, когда я передаю $ html обратно, если содержимое это:
$html = "<div>hi there</div>";
Работает нормально (все мои диалоги сообщений об ошибках - одна строка). Но если это:
$html = "<div>
hi there
</div>";
Взрывается.
Я действительно не уверен, как обойти это или есть лучший способ сделать это. Для меня важно сохранить форматирование, чтобы люди могли копировать HTML-шаблон.
Я могу просто сломаться и показать файл шаблона на странице PHP, если я не могу решить эту проблему, но я действительно надеялся сохранить все в рамках HTML-страницы.