这有什么需要JSON来解决的?

时间:2012-09-04 07:50:23

标签: php javascript jquery json joomla

我遇到了一个需要你帮助的小问题。我在Joomla模块中进行编码,但对于那些不喜欢Joomla的人来说这不是一个问题。

在Joomla的模块中,会有一个名为tmpl(我认为是template的文件夹),其中包含一个小文件default.php,该视图将呈现给浏览器。这大致是我正在处理的文件的一部分

!DOCTYPE HTML
<?php 
// perform some initialization
?>

<script language="javascript">
$(document).ready(function()
{
    var obj=["o1","o2","o3","o4",...,"o_n"];
    //do something with range obj
});

</script>

<div>
    <div class="content">
        <?php
            if(is_set($array))
            {
                foreach($array as $key=>$val):
            ?>
                //GET $val->id
            <?php
                //display $val->$content
            }
        ?>
    </div>
</div>

foreach循环中,我希望获得$val内的所有整数ID,它们将作为字符串反馈到上面的javascript的obj变量中。我需要自动完成这项工作;当页面加载时,javascript中的obj被初始化,当我将新的$val项添加到数据库中时,这也必须自动完成(我不必打开此默认页面进行编辑obj)。

您是否了解我现在遇到的问题,请询问并回复。谢谢

2 个答案:

答案 0 :(得分:0)

一种解决方案是构建要在PHP中传递给JS的数组,然后json_encode将其传递给JS。它比在JS中构建它更容易,然后通过生成的JS代码扩展它。请参阅此示例:

!DOCTYPE HTML
<?php 
// perform some initialization
?>

<?php
$obj = array("o1","o2","o3","o4",...,"o_n");
if(is_set($array)) {
    foreach($array as $key=>$val) {
        $obj[] = $val->id;
    }
}
?>

<script language="javascript">
$(document).ready(function()
{
    var obj=<?php echo json_encode($obj); ?>;
    //do something with range obj
});

</script>

另一种方法是使用AJAX调用来填充这个数组,但这并不总是最好的方法,所以我将由你决定。

答案 1 :(得分:0)

当渲染页面构成时,javascript为字符串并输出。因此,当您的页面被加载时(在您已经构建了数组对象之后),它将以JS为例。

希望这有帮助