我有一个onclick事件如下。
<div onclick="display_function('<?php echo $user_id;?>','<?php echo $student_id;?>','<?php echo $student_name;?>')"></div>
function display_function(user_id,student_id,student_name)
{
alert(user_id+'-'+student_id+'-'+student_name); //<-- testing only. I have my own code here
}
该功能可以正常使用Mary,Chris等名称。
但是,如果学生姓名包含'
,例如Cheng'li
,该功能无效。
我需要帮助来解决这个问题。如何通过“转义”名称中的引号来使函数正常工作?
感谢。
答案 0 :(得分:4)
您需要在希望回复的数据周围添加对htmlentities
的调用。
不这样做会使您的代码暴露于XSS攻击。
答案 1 :(得分:1)
使用PHP函数addslashes
<?php
$str = "Is your name O'reilly?";
// Outputs: Is your name O\'reilly?
echo addslashes($str);
?>
在你的情况下
<?php echo addslashes($student_name);?>
参考
注意:如果您的代码包含html标签而不是使用htmlentities(Entoarox Answer)
答案 2 :(得分:0)
您可以使用escape()
<div onclick="display_function(escape('<?php echo $user_id;?>'),escape('<?php echo $student_id;?>'),escape('<?php echo $student_name;?>'))"></div>
function display_function(user_id,student_id,student_name)
{
alert(user_id+'-'+student_id+'-'+student_name); //<-- testing only. I have my own code here
}
答案 3 :(得分:0)
这是因为您在单引号中传递函数中的值。当name有一个引号时,这将导致错误。
尝试双引号,如
<div onclick="display_function(\"<?php echo $user_id;?>\",\"<?php echo $student_id;?>\",\"<?php echo $student_name;?>\")"></div>
答案 4 :(得分:-1)
只需添加\ before'告诉你的脚本它是一个字符串。我希望它有所帮助
<?php
$user_id = 1;
$student_id = 1;
$student_name = "Cheng\'li";
?>
<div onclick="display_function('<?php echo $user_id;?>','<?php echo $student_id;?>','<?php echo $student_name;?>')">Click</div>
<script>
function display_function(user_id,student_id,student_name)
{
alert(user_id+'-'+student_id+'-'+student_name); //<-- testing only. I have my own code here
}
</script>
如果您不能将\直接放在String中,则需要使用[addslashes][1]
<script>
function display_function(user_id,student_id,student_name)
{
alert(user_id+'-'+student_id+'-'+addslashes(student_name)); //<-- testing only. I have my own code here
}
</script>