Javascript 如何使用ajax显示数据库中的图像
我正在开发一个简单的移动应用程序,它使用一个数据库来存储包括图像在内的内容,我正在使用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);
$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,因此改为在响应appenddata:image/jpg;base64,
并使用php或数据库对base64进行编码。或者在存储之前对其进行编码,或者根本不存储在数据库中;P
":image" => file_get_contents($image),
":image" => base64_encode(file_get_contents($image)),