我有一个ajax脚本,我有点理解,但仍然需要一些额外的帮助。
$('.images').click(function(){
var imageId = $(this).attr('id');
alert(imageName);
$.ajax({
type: "get",
url: "imageData.php",
dataType: "json",
data: {getImageId: imageId},
error: function() {
alert("error");
},
success: function(data){
alert(imageId);
$("#images_"+imageId).html(data);
}
});
//$('#images_'+imageId).toggle();
});
我有那个代码,它转到这个imageData.php文件
<?php
if(isset($_GET)){
$images = "";
$path = 'img/';
$imageId = $_GET['getImageId'];
$sql = mysql_query("SELECT * FROM images WHERE iID = '".$imageId."'");
while($row = mysql_fetch_array($sql)){
$images .= $path.$row['images'];
}
$json = json_encode($images);
?>
<img src='<?php echo $json;?>'/>
<?php
}
?>
为什么当我尝试从$ images回显字符串时输出错误,但是当我echo $imageId;
时它输出正确?我正在尝试从mysql输出一些东西,但不是只想输出id。
需要帮助,谢谢
答案 0 :(得分:1)
由于您使用while循环可能会获得许多图像,因此您可能希望这样做:
在php中:
$x = 0;
$another = array();
while($row = mysql_fetch_array($sql)){
$another[$x] = $path.$row['images'];
$x++;
}
echo json_encode($another);
并在jquery中(在你的成功回调中):
$.each(data, function(i, v){
// Do the image inserting to the DOM here v is the path to image
$('#somelement').append('<img src="'+v+'"');
});
答案 1 :(得分:1)
此处不需要使用json_encode
,没有需要采用JSON格式的数据。如果查询只返回一个图像,也没有理由循环结果集。
试试这个:
<?php
if(isset($_GET['getImageId'])) {
$path = '';
$imageId = mysql_real_escape_string($_GET['getImageId']); // SQL injection!
$result = mysql_query("SELECT images FROM images WHERE iID = '".$imageId."'");
$row = mysql_fetch_array($result);
if($row) {
$path = 'img/' . $row['images'];
}
}
?>
<?php if($path): ?>
<img src='<?php echo $path;?>'/>
<?php endif; ?>
如果iID
实际上是一个整数,则需要省略查询中的单引号。
您还必须将dataType
从json
更改为html
,因为您要返回图片代码(HTML)而不是JSON :
$.ajax({
type: "get",
url: "imageData.php",
dataType: "html",
data: {getImageId: imageId},
error: function() {
alert("error");
},
success: function(data){
$("#images_"+imageId).html(data);
}
});
另一种选择是仅返回文本(链接)并在客户端创建图像:
<?php
if(isset($_GET['getImageId'])) {
$path = '';
$imageId = mysql_real_escape_string($_GET['getImageId']); // SQL injection!
$result = mysql_query("SELECT images FROM images WHERE iID = '".$imageId."'");
$row = mysql_fetch_array($result);
if($row) {
echo 'img/' . $row['images'];
}
}
?>
在JavaScript中:
$.ajax({
type: "get",
url: "imageData.php",
dataType: "text",
data: {getImageId: imageId},
error: function() {
alert("error");
},
success: function(data){
$("#images_"+imageId).html('<img src="' + data + '" />');
}
});
答案 2 :(得分:0)
要输出图像,您必须设置图像标记的src
属性(如果已有),或者您可以动态创建它。在这里看到如何做到&gt; jQuery document.createElement equivalent?