图像映射坐标悬停,ajax无法正常工作

时间:2016-01-24 03:05:42

标签: php html css ajax imagemap

我有一个带有ajax悬停的图像映射,以从数据库表major_occurrence中检索信息。但它似乎与ajax调用完全没有关系。

悬停是可点击的,因此它会重定向到显示出现详细信息的另一个doRpMap.php 请就此事提出建议。谢谢。原谅我是一个编程新手。

我是否正确地采取以下方式:

  1. 要在我的主页面中回拨getOccCount.php $result的变量?

  2. 如何将ajax call()插入我的<span>

  3. getOc​​cCount.php

    <?php
    $location_id = $_GET['location_id'];
    $query = "SELECT COUNT(occurrence_id) FROM major_occurrence WHERE  '$location_id' = location_id GROUP BY location_id";
    $result = mysqli_query($link, $query) or die(mysqli_error($link));
    $array = mysql_fetch_row($result);                          //fetch result    
    echo json_encode($array);
    ?>
    

    主页

    <style type="text/css">
        #map {
            margin:0;
            padding:0;
            width:950px;
            height:1211px;
            background:url(images/Campus-Map.jpg);
            background-size: 950px 1211px;
            font-family:arial, helvetica, sans-serif;
            font-size:8pt;
        }
    
        #map li {
            margin:0;
            padding:0;
            list-style:none;
        }
    
        #map li a {
            position:absolute;
            display:block;
            background:url(blank.gif);
            text-decoration:none;
            color:#000;
        }
    
        #map li a span { display:none; }
    
        #map li a:hover span {
            position:relative;
            display:block;
            width:200px;
            left:20px;
            top:20px;
            border:1px solid #000;
            background:#fff;
            padding:5px;
            filter:alpha(opacity=80);
            opacity:0.8;
        }
    
        #map a.rpc{
            top: 1060px ;
            left: 585px;
            width: 78px;
            height: 65px;
        }
    </style>
    <body>
    <script>
                $(document).ready(function() {
                $('#map span').hover(function () {
                    var $t = $(this);
                    var location_id = $t.attr("location_id");
                    $.ajax({
                        url: 'getOccCount.php',
                        data: "{location_id: location_id}",
                        dataType: 'json',
                        method: 'GET',
                        success: function (result) {
                            $t.html('Total Number of Occurrence: ' + result[0]);
                        }
                    }
                    });
                });
            </script>
            <ul id="map">
                <li><a class="rpc" href="doRPMap.php?location_id=1"><span location_id="1"><b>RPC</b></span></a></li>
    </ul>
    </body>
    

1 个答案:

答案 0 :(得分:0)

完整的解决方案需要一些工作。让我给你一些想法。我为格式化方面的问题而道歉...这里的{}函数似乎对我没有用。

  1. 如您所述,您想查询给定位置的事件数。在getOccCount.php中,我没有看到任何传递位置ID的机制。看来查询始终返回 ALL 次出现。您可能想要添加类似于

    的行

    $location_id = @$_REQUEST['location_id'];

    并在查询的WHERE子句中使用该值。

  2. 您的html中的<span>没有location_id属性:

    <span><b>RPC</b></span>

    因此,您尝试检索该属性的行将找不到任何内容:

    var location_id = $(this).attr("location_id");

  3. 您以两种不同的方式进行两次相同的ajax调用。以$.ajax({开头的整个区块都会调用getOccCount.php,但是,我没有看到您通过data传递给成功回调的任何内容。
    然后再次在成功回调函数中编写$.get("getOccCount.php", ...,它基本上会再次执行相同的调用。这次您尝试传递location_id参数,我们已经知道这些参数未在getOccCount.php中查看。

  4. 如果您尝试将结果存储回用户悬停在您的span上,请使用$('#map>span')作为选择器,将结果存储在 ALL 跨度。

  5. 因此,您的解决方案的开头可能如下所示:

    <body>
    <script>
    $(document).ready(function() {
        $('#map span').hover(function () {
            var $t = $(this);
            var location_id = $t.attr("location_id");
            $.ajax({
                url: 'getOccCount.php',
                data: "{location_id: location_id}",
                dataType: 'json',
                method: 'GET',
                success: function (result) {
                    $t.html('Total Number of Occurrence: ' + result[0]);
                }
            });
        });
    });
    </script>
    <ul id="map">
        <li><a class="rpc" href="doRPMap.php?locID=1"><span location_id="1"><b>RPC</b></span></a></li>
    </ul>
    </body>
    

    就像我说的,完整的解决方案需要更多的工作,特别是在将location_id传递给您的查询时。希望我的想法有助于取得进展。