任何忽略未定义变量的脚本?

时间:2017-10-12 03:09:17

标签: javascript php codeigniter

在我的模板视图文件中有以下代码:

<script>
    // When the document is ready
    $(function() {
        var treedata = <?php (($treedata=="" ? "":$treedata)); ?>;
        $('#treeview').treeview({data: treedata});
    });                        
</script>

但是我没有在每个页面中使用这个树视图,因此每当没有treedata发送时输出将是这样的

A PHP Error was encountered
Severity: Notice
Message:  Undefined variable: treedata
Filename: views/admin.php
Line Number: 355

如果没有控制器发送treedata,我怎么能把它留空?

3 个答案:

答案 0 :(得分:2)

你可以使用这种方法。

var treedata = <?php echo isset($treedata) ? '"'.$treedata.'"' : "''" ; ?>;
  • echo显示结果。
  • isset()以确定变量是否存在
  • 将结果换行以避免javascript中的ReferenceError: a is not defined

答案 1 :(得分:1)

您有多种选择。我的首选立场通常是设计您的代码,以便您永远不会有未定义的变量。如果没有该代码结构,您可以确保它已设置:

$treedata = isset( $treedata ) ? $treedata : "";

或者,您可以考虑完全禁用NOTICE警告。你如何做到这一点取决于具体情况,但你可能会尝试这样的事情:

ini_set('error_reporting', E_ALL & ~E_NOTICE);

此外,当$treenode为空时,您是否还有Javascript错误?我相信当$treenode为空时,您的Javascript行会变为:

var treedata = ;

哪个错误。建议你用PHP包装引号:

var treedata = <?php (($treedata=="" ? '""':$treedata)); ?>;

答案 2 :(得分:1)

您应该使用isset()函数来检查变量存在。 所以,你应该替换:

Promise

$treedata==""

isset() - 确定变量是否已设置且不为NULL