我有一个带有ajax悬停的图像映射,以从数据库表major_occurrence中检索信息。但它似乎与ajax调用完全没有关系。
悬停是可点击的,因此它会重定向到显示出现详细信息的另一个doRpMap.php
请就此事提出建议。谢谢。原谅我是一个编程新手。
我是否正确地采取以下方式:
要在我的主页面中回拨getOccCount.php
$result
的变量?
如何将ajax call()插入我的<span>
?
<?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>
答案 0 :(得分:0)
完整的解决方案需要一些工作。让我给你一些想法。我为格式化方面的问题而道歉...这里的{}函数似乎对我没有用。
如您所述,您想查询给定位置的事件数。在getOccCount.php
中,我没有看到任何传递位置ID的机制。看来查询始终返回 ALL 次出现。您可能想要添加类似于
$location_id = @$_REQUEST['location_id'];
并在查询的WHERE子句中使用该值。
您的html中的<span>
没有location_id属性:
<span><b>RPC</b></span>
因此,您尝试检索该属性的行将找不到任何内容:
var location_id = $(this).attr("location_id");
您以两种不同的方式进行两次相同的ajax调用。以$.ajax({
开头的整个区块都会调用getOccCount.php
,但是,我没有看到您通过data
传递给成功回调的任何内容。
然后再次在成功回调函数中编写$.get("getOccCount.php", ...
,它基本上会再次执行相同的调用。这次您尝试传递location_id
参数,我们已经知道这些参数未在getOccCount.php
中查看。
如果您尝试将结果存储回用户悬停在您的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传递给您的查询时。希望我的想法有助于取得进展。