知识点:

1、ajax删除;

2、一个同步实现三个异步的效果。

html 部分

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>招聘管理</title>
<link href="__PUBLIC__/HomeStyle/css/layout_903ac4c.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/HomeStyle/css/widgets_680817d.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/HomeStyle/css/main.html_aio_7fcf01c.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/HomeStyle/css/main.html_aio_b9a55e6.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="__PUBLIC__/HomeStyle/css/main.html_aio_2_f8a294e.css"> </head>
<style type="text/css">
.delivery_tabs li.current_2 { color: #00b38a!important; border-bottom: 3px solid #00b38a; } </style>
<body> <!--首页 用户 公司 标题栏-->
<include file="Public/header" nav="Recruitment_manage" /> <!-- 页面主体START -->
<div class="container clearfix" id="container"> <!--左侧菜单栏-->
<div class="user_bindSidebar">
<dl class="user_sideBarmenu">
<dt class="title">帐号设置 </dt>
<dd>
<a href="{:U('Home/Company/bind_account')}">帐号绑定</a>
</dd>
<dd>
<a href="{:U('Home/Company/updatePwd')}">修改密码</a>
</dd>
<dd>
<a href="{:U('Home/Company/index')}">公司资料</a>
</dd> <dt class="title">招聘管理</dt>
<dd>
<a class="hover" href="{:U('Home/Recruit/Recruitment_manage')}">我的招聘</a>
</dd>
<dd>
<a href="{:U('Home/Wallet/apply_invoice')}">申请发票</a>
</dd>
<dd>
<a href="{:U('Home/Wallet/recharge')}">我的钱包</a>
</dd>
</dl> </div> <input type="hidden" value="1" id="hasSidebar"/>
<div class="user_userinfo_content">
<dl class="c_section">
<dt id="autofiletitle">
<h1>
招聘管理
<!--<select name=""style=" color:#999; margin-left:10px;"><option value="0" >2个月内投递</option></select>-->
<a href="">刷新</a>
</h1> </dt>
<dd class="recharge">
<!--用户基本信息栏-->
<include file="Public/company_header_user" nav=""/>
</dd>
<dd class="bullet_out">
<div class="delivery_tabs">
<ul class="reset" style="cursor:pointer">
<li class="current_2" onclick="navheader(this)">
<a id="job_state_li" >职位列表</a>
</li>
<li onclick="navheader(this)" >
<a id="received_resume" >收到简历</a>
</li >
<li onclick="navheader(this)">
<a id="download_resume" >已下载的简历</a>
</li>
<li class="current">
<a href="{:U('Home/CompanyJob/create')}" class="all_border current_checked ">新增职位</a>
</li>
</ul>
</div> <form id="receivedForm" style="display: none;">
<ul class="reset my_delivery" id="ullist">
<foreach name="received_resume" item="vo" >
<li >
<div class="d_item clearfix" >
<div class="d_job">
<a class="d_job_link" href="{:U('Home/UserShow/index',array('uid'=>$vo['user_id']))}" data-index="0" target="_blank" >
应聘: <em class="d_job_name">{$vo.job_name}</em>
</a>
<a class="received_resume_del d_time" href="javascript:void(0)" data-id="{$vo.id}" >
删除
</a>
</div>
<div class="d_resume"><span class="d_resume_type">{$vo.name}/{$vo.sex}/{$vo.work_year}</span>
<span class="d_time">{$vo.create_time|date='Y-m-d H:i',###}</span>
</div>
</div>
</li>
</foreach> </ul>
</form> <form id="downloadForm" style="display: none;">
<ul class="reset my_delivery">
<foreach name="download_resume" item="vo">
<li id="lilist_download">
<div class="d_item clearfix">
<div class="d_job">
<a class="d_job_link" href="{:U('Home/UserShow/index',array('uid'=>$vo['user_id']))}" data-index="0" target="_blank" >
简历: <em class="d_job_name">{$vo.resume_name}</em>
</a>
<a class="Resume_download_del d_time" href="javascript:void(0)" data-id="{$vo.id}" >
删除
</a>
</div>
<div class="d_resume"><span class="d_resume_type">{$vo.name}/{$vo.sex}/{$vo.work_year}</span>
<span class="d_time">{$vo.create_time|date='Y-m-d H:i',###}</span>
</div>
</div>
</li>
</foreach>
</ul>
</form> <form id="jobForm" style="display: block;">
<ul class="reset my_delivery" >
<foreach name="job_state" item="vo">
<li >
<div class="d_item clearfix">
<div class="d_job">
<a class="d_job_link" href="{:U('Home/JobShow/index/',array('jid'=>$vo['id']))}" data-index="0" target="_blank" >
职位:<em class="d_job_name">{$vo.name}</em>
</a>
<a href="{:U('Home/CompanyJob/jobedit/',array('jid'=>$vo['id']))}" class="d_time">编辑</a>
<!--<a href="{:U('Home/RecruitmentManage/del_job/',array('id'=>$vo['id']))}" class="d_time">删除</a>-->
<a class="job_del d_time" href="javascript:void(0)" data-id="{$vo.id}" >
删除
</a>
</div>
<div class="d_resume"><span class="d_resume_type">部门:{$vo.branch}</span>
<span class="d_time">{$vo.create_time|date='Y-m-d H:i',###}</span>
</div>
</div>
</li>
</foreach>
</ul>
</form> </dd>
</dl>
</div>
</div>
<include file="Public/footer" nav='index'/>
</body>
<script src="__PUBLIC__/HomeStyle/js/jquery.1.10.1.min.js"></script>
<script src="__PUBLIC__/HomeStyle/layer_mobile/layer.js"></script>
<script type="text/javascript"> function navheader(obj) { //点击后,去掉ul中除了index=3以外的所有li的class,li从0开始计算
$(".delivery_tabs ul li:lt(3)").attr("class", "");
//给当前选中的li加current_2样式
$(obj).attr("class","current_2");
} $(document).ready(function(){ //1点击收到简历
$("#received_resume").click(function() {
//收到简历form显示
$("#receivedForm").css('display','block');
//已下载简历form隐藏
$("#downloadForm").css('display','none');
//职位状态form隐藏
$("#jobForm").css('display','none'); }); //2点击已下载简历
$("#download_resume").click(function () {
//收到简历form隐藏
$("#receivedForm").css('display','none');
//已下载简历form显示
$("#downloadForm").css('display','block');
//职位状态form隐藏
$("#jobForm").css('display','none'); }); //3点击职位状态
$("#job_state_li").click(function () {
//收到简历form隐藏
$("#receivedForm").css('display','none');
//已下载简历form隐藏
$("#downloadForm").css('display','none');
//职位状态form显示
$("#jobForm").css('display','block'); }); //删除职位
$('.job_del').click(function(){
var obj=$(this); //指当前被点击的带有job_del类别的对象
if(confirm('你确定要删除该职位吗?')){
$.ajax({
url:"/Home/Recruit/del_job",
data:{id:obj.attr('data-id')},
type:'post',
success:function(data){
// alert(data.msg);
if(data.msg=="删除成功"){
obj.parents('li').remove();
}else{
layer.open({
content:'删除失败',
btn:'我知道了'
})
} //跟新当前职位数
//$('#job_number').html(data.num)
}
})
} }); //删除已下载的简历
$('.Resume_download_del').click(function(){
var obj=$(this);
if(confirm('你确定要删除该职位吗?')){
$.ajax({
url:"/Home/Recruit/del_resume_download",
data:{id:obj.attr('data-id')},
type:'post',
success:function(data){
// alert(data.msg);
if(data.msg=="删除成功"){
obj.parents('li').remove();
}else{
layer.open({
content:'删除失败',
btn:'我知道了'
})
}
}
})
}
}); //删除已收到的简历
$('.received_resume_del').click(function(){
var obj=$(this);
if(confirm('你确定要删除该职位吗?')){
$.ajax({
url:"/Home/Recruit/del_received_resume",
data:{id:obj.attr('data-id')},
type:'post',
success:function(data){
// alert(data.msg);
if(data.msg=="删除成功"){
obj.parents('li').remove();
}else{
layer.open({
content:'删除失败',
btn:'我知道了'
})
}
}
})
}
}); }); </script> </html>

  

后台thinkphp部分

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017/6/9
* Time: 17:14
*/ namespace Home\Controller;
class RecruitController extends CompanyBaseController { public function __construct()
{
parent::__construct(); }
//我的招聘
public function Recruitment_manage()
{
if (!session('?user.id')) {
$this->redirect('User/login');
} else {
$name = $_SESSION['user']['username'];
$user = M("Users");
$usermodel = $user->where("username=" . $name)->find(); $this->assign("user", $usermodel);
}
//1显示 收到的简历
$received_resume=$this->received_resume();
//2显示 已下载的简历
$download_resume=$this->download_resume();
//3显示 职位状态
$job_state=$this->job_state();
//输出到模板
$this->assign('received_resume',$received_resume);
$this->assign('download_resume',$download_resume);
$this->assign('job_state',$job_state);
$this->display(); } //收到简历
public function received_resume(){
$sendObj=M("Send");
$jobObj=M("Job");
$resumeObj=M("Resume");
$basicConfig= M('BasicConfigCategory');
$array=array('女','男');//0代表女,1代表男
//查询send表中包含company_id的信息 存入res
//send表中的company_id 等于企业类型的用户id
$res=$sendObj->where(array('company_id'=>$this->uid))->order('create_time desc')->select();
//重新组合res对象的内容,用于输出到前台.相当于新建了一个model
foreach($res as &$val ) {
//循环查询res对象val在job_id 对应的job表信息 存入res2
$res2 = $jobObj->where(array('id' => $val['job_id']))->find();
//查询res中user_id对应的resume表信息
//用户id和简历id相同,简历表id不是自增长的。????那么只能创建一份简历。
$res3 = $resumeObj->where(array('id' => $val['user_id']))->find();
$res4= $basicConfig->where(array('id'=>$res3['work_year']))->find();
// 在res2取与job_id对应的职位名称
$val['job_name'] = $res2['name'];
//res3中取与user_id对应的用户名
$val['name'] = $res3['name'];
//时间前台方法做
// $val['create_time'] = date("Y-m-d H:i", $val['create_time']);
//性别
$val['sex'] = $array[$res3['sex']];
//工作经验
$val['work_year']= $res4['name'];
}
return $res;
} //已下载的简历
public function download_resume(){
$resume_download=M("Resume_download");
//$jobObj=M("Job");
$basicConfig= M('BasicConfigCategory');
//var_dump($basicConfig);
$resumeObj=M("Resume");
$array=array('女','男');
//表中的company_id 其实是用户(企业)的id
$res=$resume_download->where(array('company_id'=>$this->uid))->order('create_time desc')->select();
//重新组合res对象的内容,用于输出到前台.相当于新建了一个model
foreach($res as &$val ) {
// $res2 = $jobObj->where(array('id' => $val['job_id']))->find();
//用户id和简历id相同,简历表id不是自增长的。
$res3 = $resumeObj->where(array('id' => $val['user_id']))->find();
$res4= $basicConfig->where(array('id'=>$res3['work_year']))->find();
//职位名称
//$val['job_name'] = $res2['name'];
//简历名称
$val['resume_name']=$res3['resume_name'];
//用户名
$val['name'] = $res3['name'];
//性别
$val['sex'] = $array[$res3['sex']];
//工作经验
$val['work_year']= $res4['name'];
//时间前台方法做
// $val['create_time'] = date("Y-m-d H:i", $val['create_time']);
}
return $res;
} /*
职位状态列表
显示companyid当前登录发布的 职位名称(链接到详情)、 发布时间、发布状态
company表的id==用户id==company_id==user_id
*/
public function job_state(){
$jobObj=M('Job');
//找出这个企业一共发布的所有职位
//compan_id 是企业类型用户的id
$res=$jobObj->where(array('company_id'=>$this->uid))->order('create_time desc')->select();
//循环遍历职位
// foreach ($res as &$val){
// $res2=$jobObj->where(array('id'=>$val['job_id']))->find();
// //职位名称
// $val['job_name']=$res2['name'];
// }
return $res; } //删除职位
public function del_job(){ $id=I('post.id');
$re=M('Job')->where('id='.$id)->delete();
// $jobnum = M('Job')->where(array('state' => 1))->count(); //审核通过的职位数
//$re=1; 测试
//delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。
if($re>0){
$msg['code'] = 1;
$msg['msg'] = '删除成功';
}else{
$msg['code'] = 0;
$msg['msg'] = '删除失败';
}
return $this->ajaxReturn($msg); } //删除收到的简历
public function del_received_resume(){ $id=I('post.id');
$re=M('Send')->where('id='.$id)->delete();
// $re=0; //测试
//delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。
if($re>0){
$msg['code'] = 1;
$msg['msg'] = '删除成功';
}else{
$msg['code'] = 0;
$msg['msg'] = '删除失败';
}
return $this->ajaxReturn($msg); } //删除已下载的简历
public function del_resume_download(){
$id=I('post.id');
$re=M('Resume_download')->where('id='.$id)->delete();
// $re=0; //测试
//delete方法的返回值是删除的记录数,如果返回值是false则表示SQL出错,返回值如果为0表示没有删除任何数据。
if($re>0){
$msg['code'] = 1;
$msg['msg'] = '删除成功';
}else{
$msg['code'] = 0;
$msg['msg'] = '删除失败';
}
return $this->ajaxReturn($msg);
} }

  

thinkphp ajax删除 隐藏与显示的更多相关文章

  1. MVC使用jQuery.ajax()删除数据

    jQuery.ajax()可以简写为$.ajax().以前有写过MVC删除的实现,如<MVC实现删除数据库记录> http://www.cnblogs.com/insus/p/336804 ...

  2. wicket基础应用(3)——wicket控件的隐藏和显示

    在一个项目,页面经常要显示和隐藏一些控件,用wicket来控制显示和隐藏控件相当的方便. 1.最简单的隐藏和显示方法: wicket的控件大部分都有setVisible(...)方法,用这个方法就可以 ...

  3. jQuery_效果(隐藏和显示)

    一.jQuery hide() 显示和 show()隐藏 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: <script type=" ...

  4. ajax上传文件显示进度

    下面要做一个ajax上传文件显示进度的操作,文末有演示地址 这里先上代码: 1.前端代码 upload.html <!DOCTYPE html> <html lang="e ...

  5. 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测

    如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...

  6. 原生JS实现全屏切换以及导航栏滑动隐藏及显示——重构前

    思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动 ...

  7. 在IIS下部署Thinkphp项目,验证码不能显示的解决办法

    由于公司租用的是虚拟空间,而且用的是IIS服务器,所以部署PHP的时候就出现很多问题:比如昨天就碰到这个问题:在IIS下部署Thinkphp项目,验证码不能显示 这是生成验证码的方法: // 制作专门 ...

  8. MFC 工具栏隐藏与显示

    最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...

  9. SAP 设置屏幕字段的隐藏、显示、必填和可选,以设置物料组为例

    1.事务码MM01,把物料组设为选填字段. 2.找到物料组的屏幕字段. 3.在后台根据屏幕字段找到对应字段组.后台路径:后勤-常规—物料主数据—字段选择—给字段组分配字段.点击后面的箭头进入下一屏幕. ...

随机推荐

  1. node-webkit学习(1)hello world

    )hello world 文/玄魂 目录 node-webkit学习(1)hello world 前言 1.1  环境安装 1.1.1 windows下的安装 1.1.2  linux环境下的安装 1 ...

  2. mysql 返回结果按照指定的id顺序返回

    mysql> ,,,,) order by field(id,,,,,) limit ,; +----+-------+------+ | id | name | sex | +----+--- ...

  3. 背水一战 Windows 10 (41) - 控件(导航类): Frame

    [源码下载] 背水一战 Windows 10 (41) - 控件(导航类): Frame 作者:webabcd 介绍背水一战 Windows 10 之 控件(导航类) Frame 示例Controls ...

  4. LOJ#3052. 「十二省联考 2019」春节十二响(启发式合并)

    题面 传送门 题解 先考虑一条链的情况,对于\(1\)号点来说,肯定是左子树中最大值和右子树中最大值一组,左子树中次大值和右子树中次大值一组--以此类推 那么如果不是一条链呢?我们把所有的链合并起来就 ...

  5. Java代码审计连载之—添油加醋

    在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下.如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS.SQL注入.命令 ...

  6. SSH 学习笔记

    零.背景 在看 pm2 的 deploy 功能的时候,对 ssh 的不熟悉导致错误频出,包括之前对 github 的配置也用到了 SSH,所以找个机会整理一下. 一.介绍 SSH 是每一台 Linux ...

  7. 防止活动上线时 微信openid 被伪造的解决办法

    背景 前不久上线了一个 campaign 项目,一个 h5,后端为php,用户可以在微信中通过网页授权的方式登录,然后用微信 openid 作为唯一标识符进行签到和抽奖的操作. 结果后期出现了很多脏数 ...

  8. 整理版jq 复习贴子

    1绝对定位(abs)与相对定位(relative) 区别是相对定位参照自己的位置进行移动(当然需要设置top left这些生效)并且原来的位置保留着 偏移后会把 其它的层遮罩住 绝对定位就是的参照位置 ...

  9. [原创]K8_C段旁注查询工具5.0 30款国外主流CMS识别+智能识别未知CMS

    8_C段旁注查询工具V5.0 20161214作者:K8拉登哥哥 唯一QQ:396890445平台: Windows + .NET Framework 4.0 简介:K8_C段 提供4种方式查询子域名 ...

  10. android电量优化 总结

    移动设备电池容量小,耗电较快(基本一天一充) ,故我们在应用开发使用相关组件和方法时候必须考虑耗电情况: 一   通过Battery Historian查看手机的耗电状况, 可以知道Android的在 ...