Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ajax显示数据库中的图像_Javascript_Php_Html_Json_Ajax - Fatal编程技术网

Javascript 如何使用ajax显示数据库中的图像

Javascript 如何使用ajax显示数据库中的图像,javascript,php,html,json,ajax,Javascript,Php,Html,Json,Ajax,我正在开发一个简单的移动应用程序,它使用一个数据库来存储包括图像在内的内容,我正在使用ajax来请求信息并在应用程序上显示这些信息。我遇到的问题是,图像没有出现,我不知道为什么 这是我用来存储信息的代码 我有一个文件返回数据库中的值,包括图像: $query = "SELECT id, title, company, category, details, image, created FROM newsapp"; try { $stmt = $db->prepare($query);

我正在开发一个简单的移动应用程序,它使用一个数据库来存储包括图像在内的内容,我正在使用ajax来请求信息并在应用程序上显示这些信息。我遇到的问题是,图像没有出现,我不知道为什么

这是我用来存储信息的代码

我有一个文件返回数据库中的值,包括图像:

$query = "SELECT id, title, company, category, details, image, created FROM newsapp";
try {
  $stmt = $db->prepare($query);
  $stmt->execute();
} catch (PDOException $ex) {
  die ('Failed to run query: ' . $ex->getMessage());
}
$row = $stmt->fetchAll();
echo json_encode($row);
Ajax函数

var url = "getnews.php"; 
    $.ajax({
        type: "POST",
        url: url, 
        crossDomain: true,
        cache: false,
        success: function(data)
            $.each(JSON.parse(data), function(i, value)
            {
                console.log(value.title); // return value from database
                console.log(value.image); // Return null
});
我曾试图通过这样做来显示图像,但没有成功; 然后我在控制台上检查了image的值,结果显示null

如果尝试直接在php上显示图像,效果很好

echo '<img alt="blog"  src="data:image/jpg;base64,'.base64_encode( $rows['image'] ).'"/>';
echo';

您可以在将图像存储到数据库之前对其进行
base64\u encode()
处理,因为从BLOB字段检索时可以
json\u encode()
。(正如Lawrence上面所说,json_encode不处理二进制数据)

IE:更改插入数据

":image" => file_get_contents($image), 


您的javascript似乎有点复杂,为什么不简单地执行
console.log(JSON.parse(data))
检查其中的内容?@KIKOSoftware如果我这样做,它会返回存储在数据库中的所有信息,但图像的值为“null”。查看控制台,json_encode不处理二进制数据,因此您的值将为null,因此改为在响应append
data:image/jpg;base64,
并使用php或数据库对base64进行编码。或者在存储之前对其进行编码,或者根本不存储在数据库中;P
":image" => file_get_contents($image), 
":image" => base64_encode(file_get_contents($image)),