簡體   English   中英

使用ajax調用從php服務器發送圖像

[英]Send image from php server using ajax call

我要做的就是搜索文件並顯示來自服務器的圖片。 HTML 有一個簡單的搜索欄,允許您輸入搜索詞。 JavaScript 使用ajax 請求調用PHP 文件,PHP 在服務器上找到該圖像並將其發送回顯示。

現在發生的是圖像沒有顯示,我得到一個圖標,指示一些無效的圖像。 ajax 調用似乎有效,但我認為我發回的數據不正確。 我一直在嘗試尋找它,但每個人似乎對如何去做都有不同的看法,這有點令人困惑。

HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">    </script>
<script src="search.js"></script>
<style type="text/css"></style>
</head>
</body>
    <header>
    <h1>My Page</h1>
    </header>
    <input type=text name="search" id="searchbox" placeholder="Search...">
    <input type=button value="Search" id=search><br>
    <div id="images"></div>
</body>

JavaScript

$(document).ready(function() {
    $("#search").on('click', function(){
        $.ajax({
           url: '/search.php',
           type: 'POST',
           data: $("#searchbox").serialize(),
           success: function(data) {
            $('#images').append(data);
           },
           error: function() {
            alert('failure');
           }
        });
    });
});

PHP

<?php
if(isset($_POST['search'])) {
    $searchterm = $_POST['search'];
    $image = "images/".$searchterm.".jpeg";
    echo '<img src="data:image/jpeg;base64,'.base64_encode($image).'">';
}
else {
    echo 'Error: image not found';
}

附注。 目前,我忽略任何類型的錯誤檢查,我只是想讓它工作並假設輸入都是有效的

幾點建議:

  1. 試試這個鏈接:

使用PHP的圖像數據URI

<?php
if(isset($_POST['search'])) {
    $searchterm = $_POST['search'];
    $image = "images/".$searchterm."jpeg";
    $imageData = base64_encode(file_get_contents($image));
    $src = 'data: '.mime_content_type($image).';base64,'.$imageData;
    echo '<img src="', $src, '">';
    ...
  1. 調試jQuery / Browser與PHP /后端服務器之間的實際HTTP流量。 您可以使用Telerek FiddlerFirebug等工具。

'希望有所幫助!

使用file_get_contents它將在瀏覽器上顯示圖像。

$image = "images/".$searchterm.".jpeg";
echo '<img src="data:image/jpeg;base64,'.base64_encode(file_get_contents($image)).'">';

當你用ajax調用圖像時為什么要將圖像轉換為base64,你可以將圖像相對路徑傳遞給img標簽,它可以為你工作我已經為你的ajax文件更新了代碼,只需進行簡單的更改就可以了如你所願。

$siteurl = "http://localhost/ajaximage/";

if(isset($_POST['search'])) {
    $searchterm = $_POST['search'];
    echo $image = $siteurl . "image/".$searchterm.".jpg";
    echo '<img src="'.$image. '">';
}
else {
    echo 'Error: image not found';
}

請更改.ajax()方法調用中使用的對象中的url屬性。 search.php的路徑不正確。

$.ajax({
    url: '/search.php',

去:

$.ajax({
    url: './search.php',

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM