我知道这个问题在 Stack Overflow 上被问了很多,尽管我找不到任何可以应用于我的问题的解决方案。
我正在开发一个重新组合公司所有视频和图片的平台(我正在收回我前同事之后的项目),我的问题是在显示图片的灯箱上。
我有一个 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;">×</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 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 工作吗?
感谢您阅读到这里,我希望您能帮助我走上正轨。
我听说我可以使用
在 javascript 中翻译数组,但它不起作用!<script>var records = <?php json_encode($records) ?></script>
这不起作用,因为您没有
echo
结果,您只是运行 JSON 过程,然后丢弃结果。添加回声:
<script>var records = <?php echo json_encode($records) ?></script>
与其他答案相反,不要尝试
JSON.parse
,因为它已经是一个有效的 JavaScript 对象。
编辑:如果您尝试将 JSON 连接到响应字符串,则不要使用
<?php
标签,而是可以这样做:
$block .= '<script>var records = ' . json_encode($records) . '; </script>';
我听说我可以使用
在 javascript 中翻译数组,但它不起作用!<script>var records = <?php json_encode($records) ?></script>
这非常接近。这将创建一个 JavaScript 变量,它是一个 JSON 字符串。然后,您可以使用 JavaScript 的 JSON parse 将该 JSON 字符串转换回数组/对象。
完成所有这些操作后,您将拥有一个 JavaScript 数组,其中包含从 PHP 数组传递的数据。