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

时间:2013-12-21 13:03:14

标签: php mysql ajax

的.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方法获取该值,但同样,它产生了没有结果。

2 个答案:

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

另外,img标签不是输入对象...在javascript节点对象中,它没有'value'成员。你可以通过以下方式获得'value'属性:

displayPic()

或者将这个值设置为img标签的id可能更容易,并使用this.id

然后,因为它只是你传入的一个值,你需要编辑字符串:

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

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

答案 1 :(得分:0)

好吧,如果我已经理解了问题,你在访问javascript中的图片时遇到了问题,所以你需要做的是改变这部分

  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作为参数,这样你就可以随心所欲地做任何事情了。