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

标签 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,我将加载整个图库,其中包含从数据库获取的路径,并且所有路径都显示在用 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 标签。也许您的意思是要设置其 srcimg 标记?

您似乎还使用同一页面作为您的网页的用户 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/

相关文章:

php - 切换多个相关元素的显示

PHP:从本地化格式解析日期

php - Laravel 使用碳获取当前季度

php - MySQL 行排序 : How to set up and use a `position` column for row ordering?

javascript - Javascript 中的收藏夹星标切换

javascript - 使用history.back()时如何传递GET值?

mysql - 在 MySQL 中,有没有办法在对列进行排序之前对其进行修改?

具有 2 个表的 MySQL 查询

javascript - 如何仅使用javascript向其他域发出请求

asp.net-mvc - 如何使用 MVC 和 jQuery AJAX 传递对象?