在Javascript函数中使用PHP

时间:2010-09-15 03:36:40

标签: php javascript

将PHP混合到Javascript中的最佳方法是什么?不应该这样做吗?应该以某种方式完成吗?我正在开发一个项目,我发现了以下javascript函数:

function getStuff() {
                <?php
                $stuff = "0:Select";
                foreach ($this->stuff as $k => $v){
                    $stuff = $stuff . ";" . $v['stuff_id'] . ":" . $v['stuff_name'];
                }
                ?>

                return "<?= $stuff ?>";
            }

假设我需要PHP提供的数据,那么获取它的理想方法是什么?这对我来说似乎不是这样,但写这个的人是我的老板所以我想在尝试改变之前先询问。

仅供参考,此JS用于视图脚本,$this->stuff的数据从使用它的控制器传入。

3 个答案:

答案 0 :(得分:3)

一种很好的方法是将数据准备到JSON,然后在页面上将其变为变量。您可以拥有复杂的结构(关联数组中包含数组n - 深),并在javascript中将其表示为对象文字。

一般来说,你是厌恶跳进这样的PHP标签。它很难看,很难阅读/维护。

答案 1 :(得分:1)

这非常可怕,更好的方法是通过Ajax请求以合适的格式(例如JSON)请求数据

扩展为什么它“可怕”。显然,这个功能是以快速的方式构建的,以完成工作,这种方法阻碍了功能的持续调试和维护。分离出服务器端数据和客户端处理的交付有助于简化和更容易跟踪。

答案 2 :(得分:1)

有很多方法可以将你的js与PHP混合在一起。你总是记住的一件事是

在JS执行之前,您的PHP首先在服务器中执行。

看起来您正在尝试动态地向选择框添加内容。如果是这种情况,你可以做这样的事情

<?php
function createSelectbox( $selItems ) {
    $selTxt = "<select>";

    foreach ($selItems as $id => $value)
        $selTxt .= "<option id='" .$id. "'>". $value. "</option>";

    $selTxt .="</select>";

    return $selTxt;
}   


?>
<html>
    <head> </head>
<body>
<?php
$selItems = Array( 1 => "One", 2 => "Two", 3=> "Three" );
echo createSelectbox($selItems);
?>  
</body>
</html>