我这里有一个小问题,我正在尝试使用一个名为“照片”的 anchor 标记,因此当用户单击该 anchor 标记时,Ajax 将从 PHP/MySQL 数据库中获取结果并在打开灯箱。
我试过创建这样的东西:
<a href="" data-lightbox="imoveis">Fotos</a>
然后是 Ajax:
$(document).on('click','#photos',function(event){
var imovel_id = $(this).attr('id');
$.ajax({
url: 'gallery_query',
type: 'POST',
dataType:"json",
data:{imovel_id: imovel_id},
success: function(data) {
if(data.status == 1) {
//Display images;
} else {
// Return Error message;
}
}
});
initLightbox();
});
然后我的 PHP 查询:
<?php require("includes/db_connect.php"); ?>
<?php $imovel_id = $_POST['property_id']; ?>
<?php
$query = "SELECT * FROM gallery WHERE imovel_id = '$imovel_id'";
$result = mysqli_query($connection,$query);
while($row = mysqli_fetch_assoc($result) ){
?>
<?php
if($result > 0){
$data['status'] = 1;
$data['retorno'] .= '<a href="../images/imoveis/'. $row['foto_gallery'] .'" data-lightbox="imoveis"><img src="../images/imoveis/'. $row['foto_gallery'] .'></a>';
mysqli_close($connection);
}else{
$data['status'] = 0;
$data['retorno'] = "Erro ao exibir fotos, se o erro persistir, entre em contato conosco.";
}
echo json_encode($data);
?>
<?php } ?>
我的问题是,我不知道这是否有效,以及在 Ajax 成功中使用什么。我正在学习 Ajax 是如何工作的,所以我尝试用 lightbox 来实现它作为实验。 有什么想法吗?
谢谢!
最佳答案
一些提示:
转义您的字符串以确保没有 SQL 注入(inject)被发送到您的服务器(不转义可能允许其他人删除您的所有数据!
<?php $imovel_id = mysqli_real_escape_string($_POST['property_id']); ?>
如果在您的数据库中记录了 imovel_id 的字符串,
如果没有
<?php $imovel_id = intval($_POST['property_id']); ?>
<?php
$query = "SELECT * FROM gallery WHERE imovel_id = $imovel_id";
发送结果:
// declare $data before, scope issue
$data = null;
if($result > 0){
$data['status'] = 1;
$data['retorno'] .= '<a href="../images/imoveis/'. $row['foto_gallery'] .'" data-lightbox="imoveis"><img src="../images/imoveis/'. $row['foto_gallery'] .'"></a>'; // you were missing a closing quote for the image src.
}else{
$data['status'] = 0;
$data['retorno'] = "Erro ao exibir fotos, se o erro persistir, entre em contato conosco.";
}
mysqli_close($connection); // close connection regardless of returned data
echo json_encode($data);
希望这对您有所帮助。
编辑:
最后一件事,如果你想显示你收到的内容:
$.ajax({
url: 'gallery_query',
type: 'POST',
dataType:"json",
data:{imovel_id: imovel_id},
success: function(data) {
if(data.status == 1) {
$('#idOfElement').html(data.retorno);
} else {
// Return Error message;
}
}
});
关于javascript - 从灯箱内的数据库中打开与 ID 相关的图库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778957/