将PHP数组传递到PHP函数内的JavaScript数组



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

我正在研究一个平台,该平台重组公司的所有视频和图片(我是在我的前Coworker之后收回项目(,我的问题是在显示图片的灯箱上。

我有一个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中翻译数组,但它不起作用!

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

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

$block .= '//getSlideIndex returns slideIndex which 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工作吗?

谢谢您到目前为止阅读,希望您能帮助我走正确的轨道。

我听说我可以使用<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>';

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

那很近。这将使JavaScript 变量是JSON字符串。然后,您可以使用JavaScript的JSON解析将该JSON字符串转换为数组/对象。

完成所有这些操作后,您将拥有一个带有PHP数组数据的JavaScript数组。

最新更新