php - 图像 map 坐标悬停与ajax不工作

标签 php html css ajax imagemap

我有一个带有 ajax 悬停的图像映射,用于从数据库表 major_occurrence 中检索信息。但它似乎根本不适用于 ajax 调用。

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

我的做法是否正确:

  1. 要回调的变量getOccCount.php $result在我的主页上?

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

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. 如您所述,您想要查询给定位置的事件数。在你的getOccCount.php我没有看到任何传递位置 ID 的机制。看起来查询总是返回 ALL 个实例。您可能想添加一行类似于

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

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

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

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

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

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

  3. 您正在以两种不同的方式对同一个 ajax 调用执行两次。整个 block 以 $.ajax({ 开头调用 getOccCount.php , 但是,我没有看到你对 data 做任何事情传递给成功回调。
    然后再次在成功回调函数中编写 $.get("getOccCount.php", ...这基本上再次进行相同的调用。这次你试图通过 location_id getOccCount.php 中没有查看我们已知的参数.

  4. 您尝试将结果存储回 span 的位置用户将鼠标悬停在你的上方使用 $('#map>span')作为将结果存储在 ALL 跨度中的选择器。

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

<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 传递到您的查询中。希望我的想法有助于取得进展。

关于php - 图像 map 坐标悬停与ajax不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34971751/

相关文章:

HTML - IE10 无法正确显示表格?

css - 在容器内水平移动元素并居中对齐

php - 上传的图像文件扩展名未存储在数据库中

php - print_r 返回所有 mysql 结果,但 json_encode 什么都不返回

php - 仅限于相关结果 - MYSQL

css - 验证 CSS 是有效语法

asp.net - 鼠标进入时弹出,鼠标移出时隐藏

php - 在 Drupal 管理/内容中获取空白页面

javascript - 模态弹出窗口/图库中的异常行为(Chrome)

javascript - 未捕获的类型错误 : Object has no method 'sortContents'