.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,我将加载整个图库,其中包含从数据库获取的路径,并且所有路径都显示在用 CSS 样式化的行中。
现在我还添加了IDs
将数据库中的这些图片(准确地说是路径)作为值。我想做的是,当有人点击其中一张照片时,我会使用 onclick
注册这次点击。在 HTML 中并调用 JavaScript
包含 AJAX
的函数代码并最终显示下面的全尺寸图片。
现在我知道这段代码中有逻辑错误,我愿意修复这些错误,但我无法克服的一个问题是,由于某种原因,使用 $_GET['id_s']
什么也不返回。
正如代码中所示,我什至尝试传递 ID
这些值 DIVs
包含所有图片,然后使用 $_GET
获取该值方法,但同样,它没有产生任何结果。
最佳答案
你有......很多问题。
我认为第一个是在 displayPic(str)
函数顶部将 str
分配给 null。在 javascript 中,=
是赋值,==
测试相等(以及 ===
测试类型)。
因此,您正在调用 xmlhttp.open("GET", "", true);
,这将再次调用当前页面并在 responseText
.
此外,没有 getElementByTagName(tag)
... 另一方面,getElementsByTagName(tag)
会为您获取具有该标签名称的节点列表。 ..我从来没有听说过 html 中有 src
标签。也许您的意思是要设置其 src
的 img
标记?
您似乎还使用同一页面作为您的网页的用户 View 以及您的 ajax 端点。这对您来说可能不会有好结果,但如果您必须的话,请在整个页面周围进行测试,这样它就不会再次将整个网页及其中的所有图像作为您的 responseText
吐出。像这样的东西:
if (isset($_GET['id_s']) { do my ajax thing } else { the normal webpage }
并且您的 onclick
需要移动到本身具有值的图像。如果您在表单上使用 displayPic(this.value)
,则 this
将是表单,没有任何值。您设置值的唯一元素是图像,因此这就是 displayPic()
调用需要进行的位置。
此外,img 标签不是输入对象...在 javascript 节点对象中,它没有“value”成员。您可以通过以下方式获取“value”属性:
displayPic(this.getAttribute('value'));
或者仅仅将该值设置为 img 标签的 id 并使用 this.id 可能会更容易
然后,由于它只是您传入的一个值,因此您需要将字符串编辑为:
str = "?id_s=" + str;
因此 get 上的查询字符串会随着其中的 id_s 参数而更改。
关于php - 如何使用 AJAX 从数据库获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719295/