我在我的网站上显示项目,但不是一次显示所有项目,我正在使用"显示更多"按钮,该按钮使用 ajax 加载更多项目。但是我似乎无法打印出已加载项目的图像,因为它是 blob 图像。另一个问题是我不知道如何一次打印出 2 个项目,现在我一次只加载 1 个项目。
阿贾克斯
$('#show-more').on("click", function(e){
e.preventDefault();
var lastID = $("#projects ul").children().last().attr('id');
$.ajax({
url: "ajax/show-more.php",
type: "POST",
data: {"lastID": lastID},
dataType:"json"
})
.done(function( msg ){
if (msg.succes == true) {
$('#projects ul').append(
"<li class='project' id='"+msg.project.id+"'>"+
"<img src='data:image/jpg;base64, "+msg.project.image+"' alt='work'>"+
"<div class='mask fade'>"+
"<h4>"+msg.project.titel+"</h4>"+
"<p>"+msg.project.text+"</p>"+
"</div>"+
"</li>"
);
}
});
});
显示更多.php
<?php
try {
$db = mysqli_connect("localhost","root","","portfolio");
$lastID = $_POST["lastID"];
$sql = "SELECT * FROM work WHERE filter = 'webdesign' AND id < ".$lastID." ORDER BY id desc LIMIT 2";
$results = mysqli_query($db,$sql);
foreach ($results as $result) {
$response["project"] = $result;
}
$response["succes"] = true;
} catch (Exception $e) {
$response["succes"] = false;
}
echo json_encode($response);
?>
如果你想要多个结果,将行保存在一个数组中,也可以对 base64 对图像数据进行编码
foreach ($results as $result) {
$result["image"] = base64_encode($result["image"]);
$response["project"][] = $result;
}
然后循环浏览结果
$.each(msg.project, function(){
$('#projects ul').append(
"<li class='project' id='"+this.id+"'>"+
"<img src='data:image/jpg;base64, "+this.image+"' alt='work'>"+
"<div class='mask fade'>"+
"<h4>"+this.titel+"</h4>"+
"<p>"+this.text+"</p>"+
"</div>"+
"</li>"
);
});
我建议您应该将图像存储为文件而不是 blob 并将路径存储在数据库中,以便您可以轻松使用它。顺便说一句,如果数据不是由base64编码的,则base64将无法工作