onclick事件中的引用

时间:2013-12-20 04:37:02

标签: javascript php jquery

我有一个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,该功能无效。

我需要帮助来解决这个问题。如何通过“转义”名称中的引号来使函数正常工作?

感谢。

5 个答案:

答案 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);?>

参考

http://www.php.net/addslashes

注意:如果您的代码包含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>