javascript - 从灯箱内的数据库中打开与 ID 相关的图库

标签 javascript php jquery mysql ajax

我这里有一个小问题,我正在尝试使用一个名为“照片”的 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/

相关文章:

javascript - 动画形式大小

javascript - 使用WebSocket时邮件被延迟

php - 谷歌应用引擎 php zip 扩展

php - ORDERING mysqli/PHP,如何添加更多排序依据?

Javascript 图像缩放 (JQuery)

javascript - 我不想在文本框中输入格式为 :123-12-1234 or 123456789 的 9 位数字

javascript - 在 HTML5 canvas 中不负责任地传播图像

Wordpress 中响应式菜单的 Javascript

php - 如何将 long 转换为字符串?

javascript - .submit() 事件后刷新表单