鼠标移动到热点上,显示详细信息

本文介绍了一个使用PHP和AJAX实现的功能,当鼠标移到表格中的特定单元格上时,会通过AJAX请求从数据库获取详细信息并在页面上显示。示例代码包括了userModel和userController的PHP类,以及JavaScript的AJAX处理函数showDetail和hideDetail。在showDetail函数中,利用XMLHttpRequest进行POST请求,接收到响应后解析JSON数据,并创建新的div元素展示详细信息。

userModel.class.php

<?php
class userModel extends baseModel{
public function searchAll(){//地图
 $sql = "select * from stu";
 $result = mysql_query($sql);
 $rows = array();
 while($row = mysql_fetch_assoc($result)){
 $rows[] = $row;
}
//var_dump($rows);
return $rows;
}
public function getOne($user_id){
  $sql = "select * from stu where id='".$user_id."'";
  $result = mysql_query($sql);
  $row = mysql_fetch_assoc($result);
  return $row;
} }

 

userController.class.php

<?php
class userController extends baseController{
public function showDetailAction(){
 //处理的是详细信息
 $userModel = new userModel("localhost","root","123","xsxx");
 $rows = $userModel ->searchAll();
 $this ->smarty->assign('list',$rows);
 //var_dump($rows);
 //echo $rows;
 $this ->smarty ->display("showDetail.tpl");
}

public function processAction(){
 $user_id=$_REQUEST['user_id'];
 $userModel=new userModel("localhost","root","123","xsxx");
 $row=$userModel->getOne($user_id);
 //echo $row['id'];
 echo json_encode($row);//因为现在数据库返回的
 }
}

 

showDetail.php

<table align="center"  bgcolor="pink" border="1">
<tr><th align="center">显示详细信息</th></tr>
<{foreach from=$list item="value"}>
<tr style="background-color:#ccc">
<td id="name_<{$value.id}>"><{$value.id}></td>
<td onmouseover="showDetail(<{$value.id}>)" onmouseout="hideDetail(<{$value.id}>)"><{$value.sname}></td>
</tr>
<{/foreach}>
</table>
<script>
function showDetail(user_id){
var xhr;
if(window.ActiveXObject){//IE浏览器new ActiveXObject("Msxml2.XMLHTTP");
 xhr=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){//火狐浏览器
 xhr=new XMLHttpRequest();
}
//换一种形式发送ajax请求--post
//open()方法三个参数
xhr.open("POST","index.php?c=user&a=process",true);

xhr.onreadystatechange=callback;//监视请求状态
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send('user_id='+user_id);
function callback(){
 if(xhr.readyState==4){//表示请求完成
  if(xhr.status==200){//表示请求成功
   //alert(xhr.responseText);
    //但是需要注意,eval()如果想要字符串转化成对象,需要先将字符串运行一下,通过()
     var json = eval('('+xhr.responseText+')');
     var new_div = document.createElement('div');
     new_div.style.backgroundColor = "#ccc";
     new_div.style.position = "absolute";
     new_div.id = "new_div"+user_id;
     new_div.style.marginLeft = '170px';
     new_div.innerHTML = "id:"+json.id+"<br/>sname:"+json.sname+"<br/>birthday:"+json.birthday+"<br/>score:"+json.score;
     document.getElementById('name_'+user_id).appendChild(new_div);
    }
   }
  }
 }
 function hideDetail(user_id){
  var new_div = document.getElementById("new_div"+user_id);
  document.getElementById("name_"+user_id).removeChild(new_div);
 }
</script>

 

具体样子如图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值