类似jq的即点即改
<?php
namespace app\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\data\Pagination;
use app\models\Users;
use app\models\Yuyue;
//留言
class MessController extends Controller
{
public function actionIndex()
{ //开启session
$session = Yii::$app->session;
$session->open();
//查询所有留言
$sql = “select * from message”;
$mess = \yii::$app->db->createCommand($sql)->queryAll();
//判断是否登录
$user = $session->get(“user”);
$u_id = $session->get(“u_id”);
if(!isset($user)){
$status = 0;
}else{
$status = 1;
//查询隐藏的留言
$sql = “select * from dis_mess where u_id=”.$u_id;
$display = \yii::$app->db->createCommand($sql)->queryAll();
//将m_id遍历为一维数组
foreach($display as $key =>$val){
$display[$key] = $display[$key][‘m_id’];
}
//取出隐藏留言的id,有就 删除该变量
foreach($mess as $k=>$v){
if(in_array($mess[$k][‘id’],$display)){
unset($mess[$k]);
}
}
}
// var_dump($mess);die();
return $this->render(“index”,[‘status’=>$status,’user’=>$user,’mess’=>$mess]);
}
//登录
public function actionLogin()
{
return $this->render(“login”);
}
//ajax 隐藏 不喜欢表
public function actionNot()
{
//开启session
$session = Yii::$app->session;
$session->open();
$u_id = $session->get(“u_id”);
$m_id = \Yii::$app->request->get(‘m_id’); //不喜欢的留言id
// var_dump($u_id);die();
$sql = “insert into dis_mess(u_id,m_id) VALUES (‘$u_id’,’$m_id’)”;
$res = \yii::$app->db->createCommand($sql)->query();
if($res){
return 1;
}else{
return 0;
}
}
//加载更多
public function actionDuo()
{
//开启session
$session = Yii::$app->session;
$session->open();
$u_id = $session->get(“u_id”);
//所有留言
$sql = “select * from message”;
$arr = \yii::$app->db->createCommand($sql)->queryAll();
//查询隐藏的留言
$sql = “select * from dis_mess where u_id=”.$u_id;
$display = \yii::$app->db->createCommand($sql)->queryAll();
//将m_id遍历为一维数组
foreach($display as $key =>$val){
$display[$key] = $display[$key][‘m_id’];
}
//取出隐藏留言的id,有就 删除该变量
foreach($arr as $k=>$v){
if(in_array($arr[$k][‘id’],$display)){
unset($arr[$k]);
}
}
// var_dump($arr);die();
return json_encode($arr);
}
//验证登录
//登录
public function actionLogin_check()
{
//接值
$username = \Yii::$app->request->post(‘username’);
$pwd = \Yii::$app->request->post(‘pwd’);
$sql = “select username,u_id from mess_user where username='”.$username.”‘ and pwd='”.$pwd.”‘”;
$arr = \yii::$app->db->createCommand($sql)->queryOne();
// var_dump($arr);die();
if(!$arr){
die(“密码错误”);
}else{
//登录成功
//开启session 存u_id ,user
$session = Yii::$app->session;
$session->open();
$session->set(“user”,$arr[‘username’]);
$session->set(“u_id”,$arr[‘u_id’]);
$this->redirect([‘mess/index’]);
}
}
//添加留言 1:成功
public function actionAdd()
{
//接值
$user = \Yii::$app->request->get(‘user’);
$content = \Yii::$app->request->get(‘content’);
$time = \Yii::$app->request->get(‘time’);
//添加留言
$sql = “insert into message(time,content,username) value(‘$time’,’$content’,’$user’)”;
$res = \yii::$app->db->createCommand($sql)->query();
if($res){
return 1;
}else{
return 0;
}
}
}
以上是控制器层
==============================================================
<!doctype html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>留言</title>
</head>
<body>
<center>
<a href=”<?= \yii\helpers\Url::to([‘mess/login’]) ?>”><input type=”button” value=”登录”/></a>
<input type=”text” id=”content”/><input type=”button” value=”留言” id=”btn” /><br>
留言内容:<br>
<table border=”1″ id=”table”>
<tbody id=”blog”>
<?php $num=0;?>
<?php foreach($mess as $k=>$v) { ?>
<?php if($num==5){break;} ?>
<tr>
<td><?= $v[‘username’] ?></td>
<td><?= $v[‘content’] ?></td>
</tr>
<tr m_id=”<?= $v[‘id’]?>” class=”tr”>
<td>日期:<?= $v[‘time’] ?></td>
<td><input type=”button” value=”隐藏” class=”yin”/></td>
</tr>
<?php $num++;?>
<?php } ?>
</table>
</tbody>
<input type=”button” value=”更多” id=”btn2″/>
<script src=”./js/jquery.min.js”></script>
<script>
$(function(){
//更多
$(“#btn2″).click(function(){
$.ajax({
url:”<?= \yii\helpers\Url::to([‘mess/duo’]) ?>”,
type: “GET”,
success: function(xml){
// alert(xml)
//拼接字符串
obj= $.parseJSON(xml);
var str = new String();
$.each(obj,function(i,n){
//拼接字符串
str+=”<tr>”;
str+=”<td>”+n.username+”</td>”;
str+=”<td>”+n.content+”</td>”;
str+=”</tr>”;
str+=”<tr m_id='”+n.id+”‘ >”;
str+=”<td>日期:”+n.time+”</td>”;
str+=”<td><input type=’button’ value=’隐藏’ class=’yin’/></td>”;
str+=”</tr>”;
})
$(“#table”).append(str);
$(“#btn2”).css(“display”,”none”);//隐藏更多按钮
}
})
})
//隐藏 问题:追加的tr触发不了点击事件
//bind live on delegate
$(“#blog”).delegate(“.yin”,”click”,function(){
// alert(“隐藏”);
var m_id = $(this).parent().parent().attr(“m_id”); //获取到id
var obj = $(this).parent().parent();
$.ajax({
url : “<?= \yii\helpers\Url::to([‘mess/not’]) ?>”,
type: “GET”,
data: “m_id=”+m_id,
success: function (msg) {
// alert(msg)
if(msg==1){
//隐藏成功 注意移除的顺序,当先杀当前变量时,当前的兄弟节点就会找不到
obj.prev().remove();
obj.remove();
}
}
})
})
//点击留言
$(“#btn”).click(function(){
//检测是否登录
var status =”<?= $status ?>”;
//未登录时
if(status==0){
alert(“请登录”);
$(“#btn”).attr(“disabled”,”true”)
}
//留言
time =”<?= date(‘Y/m/d’,time()) ?>”;
content =$(“#content”).val();
user = “<?php echo $user ?>”;
$.ajax({
url:”<?= \yii\helpers\Url::to([‘mess/add’]) ?>”,
type: “GET”,
data: “time=”+time+”&content=”+content+”&user=”+user,
success: function(msg){
//留言成功时
if(msg==1){
//拼接字符串
var str = new String();
str+=”<tr>”;
str+=”<td>”+user+”</td>”;
str+=”<td>”+content+”</td>”;
str+=”</tr>”;
str+=”<tr>”;
str+=”<td>日期:”+time+”</td>”;
str+=”<td><input type=’button’ value=’隐藏’ class=’yin’/></td>”;
str+=”</tr>”;
$(“#table”).append(str);
}
}
})
})
})
</script>
</center>
</body>
</html>
类似jq的即点即改的更多相关文章
- css3 位置选择器 类似jq的:eq(0)
JQ使用 :eq(位置),可以选择第几个元素 CSS3里面新增了一个用法,:nth-child(位置) 可实现和JQ同样的功能 需要注意的是jq第一个是从0开始,CSS的第一个是从1开始
- 【笔记】js原生方法 在元素外部或内部实现添加元素功能(类似jq 的 insert 和 append)
介绍的这个方法是:insetAdjacentHTML() 方法 此方法接收两个参数: 第一个参数必为下列值: beforebegin:在调用的元素外部的前面添加一个目标元素 afterend:在调用元 ...
- jquery技巧之让任何组件都支持类似DOM的事件管理
本文介绍一个jquery的小技巧,能让任意组件对象都能支持类似DOM的事件管理,也就是说除了派发事件,添加或删除事件监听器,还能支持事件冒泡,阻止事件默认行为等等.在jquery的帮助下,使用这个方法 ...
- Promise 基础学习
Promise 是ES6的特性之一,采用的是 Promise/A++ 规范,它抽象了异步处理的模式,是一个在JavaScript中实现异步执行的对象. 按照字面释意 Promise 具有"承 ...
- centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,curl,ping ,telnet,traceroute ,dig ,nc,nmap,host,nethogs 第十六节课
centos linux系统日常管理3 服务管理ntsysv,chkconfig,系统日志rsyslog,last ,lastb ,exec,xargs,dmesg,screen,nohup,cur ...
- 温习classList api
有道题是一个removeClass的功能,代码里是正则分隔了传入的name,根据name的个数,循环移除掉,让寻找bug..看了了这几行代码,首先想到的是我会如何去优化. 如果看代码一两分钟就能找到公 ...
- zepto问题
jq功能对照表 http://jsrun.it/21f/mrCH 不支持 jquery的 ajaxSetup 全局修改ajax的设置 $.ajaxSetup({beforeSend : beforeS ...
- Joomla - T3模板(非常好用的4屏响应式模板)
一.下载 T3 模板 下载地址(需要注册登录才能下载):https://www.joomlart.com/member/downloads/joomlart/t3-framework/t3-blank ...
- 基于Node.js实现一个小小的爬虫
以前一直听说有爬虫这种东西,稍微看了看资料,貌似不是太复杂. 正好了解过node.js,那就基于它来个简单的爬虫. 1.本次爬虫目标: 从拉钩招聘网站中找出“前端开发”这一类岗位的信息,并作相应页面分 ...
随机推荐
- 【转载】MFC动态创建控件及其消息响应函数
原文:http://blog.sina.com.cn/s/blog_4a08244901014ok1.html 这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)h ...
- c#使用 HtmlAgilityPack来进行抓取和解析来获得table表格信息
项目上要用到抓取网页,最后选用了HtmlAgilityPack来进行. 官网地址:https://html-agility-pack.net/,可以看一下 基础的: // From File var ...
- Linux之linux入门
学习linux之前先了解一下操作系统: 操作系统的定义: 操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内 ...
- 记一次eslint规则配置
{ // 环境定义了预定义的全局变量. "env": { //环境定义了预定义的全局变量.更多在官网查看 "browser": true, "node ...
- JUC——阻塞队列
Queue是一个队列,而队列的主要特征是FIFO先进先出,要实现生产者与消费者模型,也可以采用队列来进行中间的缓冲读取,好处是:生产者可以一直不停歇的生产数据. BlockingQueue是Queue ...
- [Unity Shader] 常用的数值类型和语义
书看到第八章,跟随写了一些例子,但有些数值类型的使用还是需要特别注意,经常需要查阅,在这里做一下总结. 1 ShaderLab属性类型和Cg变量类型的匹配关系 Color.Vector:float4, ...
- 前端常见算法面试题之 - 从尾到头打印链表[JavaScript解法]
题目描述 输入一个链表的头结点,从尾到头反过来打印出每个结点的值 实现思路 前端工程师看到这个题目,直接想到的就是,写个while循环来遍历链表,在循环中把节点的值存储在数组中,最后在把数组倒序后,遍 ...
- maven 添加spring/springmvc依赖项
<spring.version>4.3.18.RELEASE</spring.version> <dependencies> <!--添加spring.spr ...
- PHP版本对比【转】
其他历史http://www.cnblogs.com/yjf512/p/3588466.html php5.3 改动: 1.realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如FI ...
- 【Alpha】阶段第七次Scrum Meeting
[Alpha]阶段第七次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 增加上课信息接口 编写按学院搜索课程接口 赵智源 构建后测试点测试框架 构建前测试点测试 ...