使用json_encode参数调用javascript函数

时间:2013-02-06 13:26:33

标签: php javascript jquery

我想调用函数onclick,但是使用这样的json_encode参数:

<a href="#" onclick="javascript:table1Modif(<?php echo substr(json_encode($res['base']),1,-1); ?>);return false;">

Jquery函数只是提醒参数:

<script>
    function table1Modif(key){
        $('#table1').html(function() {
            alert(key);
        }); 

    }
</script>

但我有一个“未定义”的错误! 我确信这是由于json_encode,但我不知道如何解决它。 谢谢!

1 个答案:

答案 0 :(得分:3)

看起来您要将字符串传递给json_encode以生成JavaScript字符串文字(无效的JSON)。

您正在使用substr删除此字符串中的引号。

因此,JavaScript将看到一个标识符(在该上下文中将被视为变量)。

你需要一个字符串文字,所以首先要做的是删除子调用

这会产生一个新问题。您将字符串插入HTML文档,但不将其表示为HTML。因此,字符串文字开头的"字符将被视为属性值的结尾,这是您不想要的。

将非HTML内容插入HTML文档时,需要将其表示为HTML。通过htmlspecialchars函数运行代码来执行此操作。

onclick="table1Modif(<?php 
    echo htmlspecialchars(
        json_encode($res['base'])
    );
?>);return false;"

我很自然地删除了完全没用的javascript: label。您没有来自breakcontinue的循环,因此它无法执行任何操作。当你了解它时,你应该用更明智的东西取代href="#"。遵循Progressive EnhancementUnobtrusive JavaScript的原则。