的.js
function displayPic(str){
if(str=""){
document.getElementById("slider").innerHTML="<img src='' class='slider'/>";
}
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
document.getElementByTagName("src").innerHTML = xmlhttp.responseText;
alert(xmlhttp.responseText);
}
};
xmlhttp.open("GET", str, true);
xmlhttp.send();
}
.PHP
<form onclick="displayPic(this.value)" method="GET" action="gallery.php">
<?php
include 'konekcija.php';
$upit = "SELECT * FROM slike";
$rezultat = mysql_query($upit) or die(mysql_error());
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' value='".$red['id']."' />".$red['id']."</div>";
}
?>
<?php
if(isset($_GET['id_s'])){
$q = $_GET['id_s'];
echo $q;
$upit2 = "SELECT path FROM slike where id=".$q;
mysql_query($upit2) or die(mysql_error());
echo "<div id='slider' align='center'><img src='' class='slider'/></div>";}?>
</form>
好的,这是我在这里要完成的事情。
首先,通过PHP,我将加载一个整个图库,其中包含从数据库中获取的路径,并且所有beind都显示在一行中,并使用CSS进行风格化。
现在我还从数据库中添加了IDs
这些图片(准确的路径)作为值。我想要做的是当有人点击其中一张照片时,我会在HTML中使用onclick
注册点击并调用包含JavaScript
代码的AJAX
函数,最后显示全尺寸图片
现在我知道我在这段代码中有错误,逻辑错误,我愿意修复,但我无法克服的是,由于某些原因,使用$_GET['id_s']
不会返回任何内容。
我甚至尝试过,在代码中看到,传递包含所有图片的ID
中的DIVs
值,然后使用$_GET
方法获取该值,但同样,它产生了没有结果。
答案 0 :(得分:0)
你有......很多问题。
我认为第一个是在str
函数的顶部将displayPic(str)
指定为null。在javascript中,=
是赋值,==
测试相等(以及===
测试类型。)
所以你打电话给你的xmlhttp.open("GET", "", true);
,它只会再次调用当前页面并在responseText
中再次返回页面html。
另一方面,没有getElementByTagName(tag)
... getElementsByTagName(tag)
,会获取带有该标记名称的节点列表...我从未听说过{{1在HTML中标记。也许你的意思是src
标签,你想要设置img
?
您还可以使用同一页面作为用户对您网页的视图以及您的ajax端点。这对您来说可能不会很好,但如果必须,请在整个页面周围进行测试,这样它就不会再将整个网页中的所有图像作为src
反映出来。类似的东西:
responseText
您的if (isset($_GET['id_s']) { do my ajax thing } else { the normal webpage }
需要移动到具有值本身的图像。如果您在表单上使用onclick
,displayPic(this.value)
将成为没有价值的表单。您设置值的唯一元素是图像,因此需要this
调用的位置。
另外,img标签不是输入对象...在javascript节点对象中,它没有'value'成员。你可以通过以下方式获得'value'属性:
displayPic()
或者将这个值设置为img标签的id可能更容易,并使用this.id
然后,因为它只是你传入的一个值,你需要编辑字符串:
displayPic(this.getAttribute('value'));
因此,get中的查询字符串会随其中的id_s参数而更改。
答案 1 :(得分:0)
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' value='".$red['id']."' />".$red['id']."</div>";
}
到此:
while($red = mysql_fetch_array($rezultat)){
echo "<div class='art_gallery'><img src='";
echo $red['path'];
echo "' class='gall' name='id_s' onclick='zoompic(".$red['id'].");' />".$red['id']."</div>";
}
现在只需访问javascript中的函数zoompic,你就可以将点击图片的id作为参数,这样你就可以随心所欲地做任何事情了。