将php数组传递给PHP函数内的javascript数组

时间:2017-06-06 14:17:21

标签: javascript php arrays json ajax

我知道这个问题已经在StackOverflow上被问了很多,尽管我找不到任何可以应用于我的问题的解决方案。

我正在一个平台上重新组合我公司的所有视频和图片(我在前同事之后收回项目),我的问题出现在显示图片的灯箱上。< / p>

我有一个PHP函数,它以字符串格式返回HTML / CSS / Javascript,如下所示:

$block = '<div id="myModal" class="modal" style="margin:auto">'
            .'<span style="float:right;margin-right:33px"><a href="'.HTTP_IHM_PATH.'Suppression.php?id='.$records[$i]['Access_Key'].'" onclick="return confirm(\'Êtes-vous sûr de vouloir continuer cette suppression ? Elle sera définitive.\');"><img src="'.HTTP_IMG_PATH.'corbeille.jpg" style="width:20px;height:auto;"></a></span>'
            .'<span class="close cursor" onclick="closeModal()" style="color:#585858; font-size:60px;float:right;">&times;</span>'
[...]
return $block;

我将这个函数称为:<?php echo function() ?>

在这里,我有一个PHP数组$records,其中包含有关我想在LightBox中显示的图片的所有信息,我希望稍后在我的代码中将这些信息用于我的javascript函数。

我听说我可以使用<script>var records = <?php json_encode($records) ?></script>在javascript中翻译数组,但它不起作用!

最后我要做的是当用户点击图片时,它会打开我的LightBox,对于他正在观看的每张图片,我想调用我的php函数UpdateViews(),将其添加1图片的数量。

我尝试使用Ajax,但由于它对我来说很新,我可能会犯愚蠢的错误(这仍然是变量$block中的字符串格式):

$block .= '//getSlideIndex returns slideIndex wich is the id of the <img/>
$(\'#\' + getSlideIndex()).on(\'click\', function (){
                    alert("Ok onclick" + records[getSlideIndex()]["Access_Key"];
                    //"Access_Key" is the property I need (primary key of the table)
                    $.ajax({
                        type:\'GET\',
                        url: \'/picture.php\',
                        data: {id=\' + records[getSlideIndex()]["Access_Key"] + \'},
                        success: function(data){
                            alert(\'success\' + data);
                        },
                        error: function(exception){
                            alert(\'Exception: \' + exception);
                        }
                    });
                    e.preventDefault();
                });';

注意:我的前同事已经在他的代码中使用了一些Ajax,所以当我在这个页面上时,已经设置了$_GET:我是否可以让我的ajax工作这个案子?

谢谢你,如果你读到这一点,我希望你能帮助我走上正确的轨道。

2 个答案:

答案 0 :(得分:4)

  

我听说我可以使用<script>var records = <?php json_encode($records) ?></script>在javascript中翻译数组,但它不起作用!

这不起作用,因为你没有echo结果,你只是运行JSON进程然后丢弃结果。添加回声:

<script>var records = <?php echo json_encode($records) ?></script>

与其他答案相反,请勿尝试JSON.parse,因为它已经是一个有效的JavaScript对象。

编辑:如果您尝试将JSON连接到响应字符串,则不要使用<?php标记,而是可以执行以下操作:

$block .= '<script>var records = ' . json_encode($records) . '; </script>';

答案 1 :(得分:0)

  

我听说我可以使用<script>var records = <?php json_encode($records) ?></script>在javascript中翻译数组,但它不起作用!

那非常接近。这将使JavaScript 变量成为JSON string。然后,您可以使用JavaScript的JSON parse将该JSON字符串转换回数组/对象。

完成所有这些操作后,您将拥有一个JavaScript数组,其中包含从PHP数组传递的数据。