1

在我的一些 PHP 页面上,我喜欢从另一个地方加载数据,并填充输入或文本区域。

当涉及到 html 标签时,我遇到了问题。(也有撇号)我在 FF 中注意到 html 通常不太擅长与 javascript 一起传递。(错误控制台)

因此,如果可能的话,我正在寻求有关如何 HONE 的帮助。

主页:

<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).'");');
?>

这适用于常规/纯文本。我可以清理它以填充 a 中的值<textarea>吗?

4

1 回答 1

4

我建议更改执行此操作的方式。要么在客户端代码中知道新内容的去向,要么创建一个对象,使客户端更容易解析它。例如

版本一:特定于服务器的处理(和客户端处理)

<?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使用。这可能会导致很多安全威胁。

于 2013-01-11T16:32:23.783 回答