-1

我想调用一个函数 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,但我不知道如何解决它。谢谢!

4

1 回答 1

3

看起来您正在传递一个字符串以json_encode生成 JavaScript 字符串文字(这不是有效的 JSON)。

您正在使用substr从该字符串中删除引号。

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

您需要一个字符串文字,因此首先要做的是删除 substr 调用

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

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

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

顺便说一句,我已经删除了完全无用的javascript:标签。您没有往返的循环,break因此continue它没有做任何事情。当你在它的时候,你应该href="#"用更明智的东西代替。遵循渐进增强不显眼的 JavaScript原则。

于 2013-02-06T13:51:55.383 回答