【发布时间】:2014-01-27 21:34:06
【问题描述】:
当标题包含撇号时,以下代码会产生 javascript 错误。我以为我用 htmlentities 正确地清理了标题字段,但是当标题包含单引号时,我仍然收到一个 javascript 错误。
如果标题包含撇号,我应该如何正确清理此字符串以使函数正常工作?
Javascript:
<script type="text/javascript">
function open_modal_now(id,title,e){
e.preventDefault();
$('#someid').val(id);
$('#anotherid').val(title);
$('#yetanotherid').modal('show');
}
</script>
HTML/PHP:
<?php foreach($item as $k => $v){ ?>
<a onClick="open_modal_now(<?= $v['id']; ?>,'<?= htmlentities($v['title'],ENT_QUOTES,"UTF-8"); ?>',event);">Open Modal</a>
<?php } ?>
我添加了<a> 所在的foreach 循环。这可能有助于解释为什么此信息位于属性标记中。
【问题讨论】:
-
不要嵌入 PHP 创建的 JS 代码。至少将值序列化为 JSON 并将其与
JSON.parse()一起使用。考虑使用网络服务。 -
可能是这样的?
<?= json_encode($title); ?> -
htmlentities 无法用于构建 Javascript...它仅适用于 html 目标。你需要使用 json_encode() 代替。
-
使用addslashes 而不是htmlentities。
-
布兰登 - 或多或少。我会把它放在其他地方,而不是属性中,因为 json_encode 可以包含
"字符。
标签: javascript php jquery html