2014-12-26 55 views
0

我在我的網站上顯示項目,但不是一次顯示所有項目我正在使用「顯示更多」按鈕加載更多的項目與Ajax。但我似乎無法打印出我加載的項目的圖像,因爲它是一個斑點圖像。另一個問題是我不知道如何一次打印兩個項目,現在我一次只能加載一個項目。加載更多項目與blob圖像在它

// AJAX

$('#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>" 
     ); 
    } 
    }); 
}); 

//顯示-more.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); 
?> 

回答

1

如果需要多個結果保存在一個數組中的行,也使用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>" 
    ); 
}); 
+0

完美的作品!非常感謝你! –

0

我建議您應該將圖像存儲爲不是blob的文件,並將路徑存儲在數據庫中,以便您可以輕鬆使用它。順便說一句base64不會工作,如果數據不是由base64編碼