在我的一些 PHP 页面上,我喜欢从其他地方加载数据,并填充输入或文本区域。
当涉及到 html 标签时,我遇到了问题。 (也有撇号) 我注意到在 FF 中,html 一般不太适合用 javascript 传递。 (错误控制台)
因此,如果可能的话,我正在寻求如何磨练这一点的帮助。
主页:
<textarea name="templatetext" id="templatetext"></textarea>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
/* calls page2.php */
$.ajax({data:"formId=loadtemplatetext",
success:function(response){
eval(response);
}
});
return false;
});
});
</script>
Page2.php
<?php
$templatetext = '<p>This is a test email<br /><br /><br /></p>
<p><span style="color: #808080; font-size: 12px; font-family: Tahoma,sans-serif;"><strong>Some Text here with an apostophe or image: <br /><img title="Test Img" src="http://somefakeurl.com/img/somefakeimg.gif" alt="test img" width="112" height="59" />';
die('$("#templatetext").val("'.addslashes($templatetext).'");');
?>
这对于常规/纯文本非常有效。
我可以清理它以填充 <textarea>
内的值吗? ?
最佳答案
我建议更改执行此操作的方式。要么在客户端代码中知道新内容的去向,要么创建一个对象,使客户端的解析变得更容易。例如
版本一:服务器特定处理(和客户端处理)
<?php
$result = array();
$result['template'] = '<p>this is a test email<br/ >...';
$result['target'] = '#templatetext';
echo json_encode($result);
然后你的 AJAX 代码变成:
$.ajax({
data:'formId=loadtemplatetext',
success: function(d){
$(d.target).html(d.template);
}
});
版本二:服务器处理、客户端处理
<?php
echo '<p>This is a test email<br />...';
然后你的 AJAX 就变成了:
$('#template').load('/page.php?formId=loadtemplatetext');
拒绝使用eval
作为所有成本。这可能会导致很多安全威胁。
关于php - JQuery - 将 Html 评估为 Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282410/