我正在设计一个模板创建工具,它使用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: Unexpected token ILLEGAL”。很明显它正在尝试评估返回的响应头,但在任何换行符处停止。
因此,要明确,当我传回$html时,如果内容是这样的:
$html = "<div>hi there</div>";
它运行良好(我所有的错误消息对话框都是一行)。但如果它是:
$html = "<div>
hi there
</div>";
它爆炸了。
我真的不确定如何解决这个问题,或者是否有更好的方法。对我来说保留格式很重要,这样人们就可以复制HTML模板。
如果我无法解决这个问题,我可能会在PHP页面上显示模板文件,但我真的希望将所有内容都保留在HTML页面中。