Php 如何使用AJAX从数据库中获取值?

Php 如何使用AJAX从数据库中获取值?,php,mysql,ajax,Php,Mysql,Ajax,.js 函数显示pic(str){ 如果(str=”“){ document.getElementById(“滑块”).innerHTML=“”; } if(window.XMLHttpRequest){ xmlhttp=新的XMLHttpRequest(); } xmlhttp.onreadystatechange=函数(){ if(xmlhttp.readyState==4){ document.getElementByTagName(“src”).innerHTML=xmlhttp.res

.js

函数显示pic(str){
如果(str=”“){
document.getElementById(“滑块”).innerHTML=“”;
}
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4){
document.getElementByTagName(“src”).innerHTML=xmlhttp.responseText;
警报(xmlhttp.responseText);
}
};
open(“GET”,str,true);
xmlhttp.send();
}
.php



你有。。。很多问题

我认为第一个是将
str
赋值给
displayPic(str)
函数顶部的null。在javascript中,
=
是赋值,
=
测试相等性(并且
=
也测试类型)

因此,您正在调用
xmlhttp.open(“GET”,true)
,它将再次调用当前页面并在
responseText
中再次返回页面html

此外,没有
getElementByTagName(标记)
<另一方面,code>getElementsByTagName(tag)
将获取具有该标记名的节点列表。。。我从来没有听说过html中的
src
标记。也许您是指要设置的
src
img
标记

看起来您正在使用同一个页面作为您的网页以及ajax端点的用户视图。这可能不会给您带来好的结果,但如果您必须这样做,请对整个网页进行测试,这样它就不会将包含所有图像的整个网页再次作为您的
responseText
。比如:

    <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>
您的
onclick
需要移动到具有值本身的图像。如果在表单上使用
displayPic(this.value)
将是没有值的表单。您设置值的唯一元素是图像,因此
displayPic()
调用需要在图像上执行

此外,img标记不是输入对象。。。在javascript节点对象中,它没有“value”成员。您可以通过以下方式获得“value”属性:

if (isset($_GET['id_s']) { do my ajax thing } else { the normal webpage }
或者,只需将该值设置为img标记的id并使用this.id可能会更容易

然后,因为它只是您要传递的一个值,所以您需要将字符串编辑为:

displayPic(this.getAttribute('value'));

因此,get上的查询字符串会随着其中的id参数而更改。

好的,如果我正确理解了这个问题,您在使用javascript访问PIC时遇到了问题,因此您需要做的是更改这一部分

str = "?id_s=" + str;
while($red=mysql\u fetch\u数组($rezultat)){
回显“$red['id']”;
}
为此:

  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\u fetch\u数组($rezultat)){
回显“$red['id']”;
}

现在,只需访问javascript中的zoompic函数,您就可以将单击图片的id作为参数,这样您就可以对其执行任何操作。

生成的HTML是什么样子的?第一个PHP部分将完成,并显示图库缩略图。它们使用CSS显示为缩略图。但问题在于$\u GET['id\u s'],它返回false。这确实让我觉得自己像个白痴。但问题仍然存在,单击图像不会将其值发送到PHP。
  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>";
    }