У меня есть следующая функция для получения шаблона HTML с сервера и замены некоторых тегов
$.ajax({
url: "/newsletter/preview/1",
data: {},
success: function(data) {
var template = data;
var layer = $("<iframe>").attr({ "id": "preview_frame" });
$("#newsletter .element input, #newsletter .element textarea").each(function() {
var id = "\\$\\$"+$(this).parent().parent().attr("id").replace(/^newsletter_/, "")+"\\$\\$";
template = template.replace(new RegExp(id, "g"), htmlspecialchars($(this).val(),2));
});
$("body").prepend(layer);
},
dataType: "html"
});
Получение шаблона работает нормально.Также замена тегов содержимым формы (при размещении alert(escape(template));
внутри цикла each
показывает, что все теги заменяются).Но есть еще две нерешенные проблемы:
Я не нашел способа установить содержимое переменной template
в iframe ($("#preview_frame").contents().find("body").html(template);
приводит только к пустому фрейму)
Предварительное добавление iframe (переменная layer
) к телу HTML происходит во время итерации по полям формы, но это необходимо сделать после (!) Замены всех тегов, чтобы толькозавершенный обработанный шаблон будет помещен в iframe.