文档章节

Yii通过Ajax修改字段值的方法

大音希声
 大音希声
发布于 2017/03/23 14:37
字数 539
阅读 16
收藏 0
Ajax修改状态:

HTML部分

<td><span data-field="audit_state" data-val="<?php echo $val -> audit_state;?>" class="<?php if($val -> audit_state != 1):?>no_<?php endif;?>shenhe set-field"></span></td>
<td><span data-field="essence_state" data-val="<?php echo $val -> essence_state;?>" class="<?php if($val -> essence_state != 1):?>no_<?php endif;?>shenhe set-field"></span></td>
jQuery部分:(单个删除的原理一样,因为做的是假删除,只是将is_hidden字段的值由0改为1,就是删除操作。)

/**
 * 审核  加精
 */
$('.set-field').bind('click', function(){
    var id = parseInt($(this).parents('tr').find('.id').val());
    var field = $(this).attr('data-field');
    var val = $(this).attr('data-val');
    var $field = $(this);
    if ( val == 1 )
    {
        val = 0;
    }
    else
    {
        val = 1;
    }
    if ( id > 0 )
    {
        var postData = {"id": id};
        switch( field )
        {
            case 'essence_state':
                postData.essence_state = val;
                break;
            case 'audit_state':
                postData.audit_state = val;
                break;
        }        
        $.post('/businesscomment/setfield', postData, function(data){
            var data = eval( '(' + data + ')');
            if ( data.status == 0 )
            {
                $.msgbox.show({message: data.msg,icon: 'ok',timeOut: '1000'});
                $field.attr('data-val', val);
                if ( $field.hasClass('no_shenhe') )
                {
                    $field.removeClass('no_shenhe').addClass('shenhe');
                }
                else
                {
                    $field.removeClass('shenhe').addClass('no_shenhe');
                }
            }
            else
            {
                $.msgbox.show({
                    message: data.msg,
                    icon: 'no',
                    timeOut: '2000'
                });
            }
        });
    }
});
/**
 * 批量删除(批量删除和批量审核的原理一样)
 */
$('#delete').bind('click', function(){
    var idLength = $('.id:checked').length;
    if ( idLength == 0 )
    {
        $.msgbox.show({
            message: '请选择要删除的文章',
            icon: 'no',
            modal: true,
            timeOut: '2000'
        });
        return false;
    }
    var ids = [];
    var i = 0;
    $('.id').each(function(){
        if ( typeof($(this).attr('checked')) !== 'undefined' )
        {
            ids[i++] = $(this).val();
        }
    });
    $("#dialog").html('').attr('title','系统提示').html("<p>删除文章后不可恢复,后果自负,确认删除吗?</p>").dialog({
    	modal: true,
		buttons: {
			'确定删除':function() {
				if ( idLength > 0 )
           	 	{
					$(this).dialog( "close" );
			        var postData = {"id": ids, "is_hidden" : 1};
			        $.post('/businesscomment/setfield', postData, function(data){
			            var data = eval( '(' + data + ')');
			            if ( data.status == 0 )
			            {
			                $.msgbox.show({
			                    message: '删除成功',
			                    icon: 'ok',
			                    timeOut: '2000'
			                });
			                setTimeout(function(){window.location.reload();},1000);
			            }
			            else
			            {
			                $.msgbox.show({
			                    message: '删除失败',
			                    icon: 'no',
			                    timeOut: '2000'
			                });
			            }
			        });
           	 	}
			},
       	 	'取消':function() {
                $(this).dialog( "close" );
            }
		}
    });
});

控制器部分:

/**
 * 修改分类字段
 */
public function actionSetField()
{
    $id = Yii::app() -> request -> getParam('id');
    if ( ! $id )
    {
        Util::json(array('status' => 1, 'msg' => '修改失败,id不存在'), 1);
    }
    $essence = Yii::app() -> request -> getParam('essence_state', null);
    $audit = Yii::app() -> request -> getParam('audit_state', null);
    $isHidden = Yii::app() -> request -> getParam('is_hidden', null);
    
    $data = array();
    //加精
    if ( $essence !== null )
    {
        $data['essence_state'] = $essence;
    }
    //审核
	if ( $audit !== null )
    {
        $data['audit_state'] = $audit;
    }
	//删除
    if ( $isHidden !== null )
    {
        $data['is_hidden'] = $isHidden;
    }
    
    $rows = 0;
    if ( $data )
    {
        //批量操作
        if ( is_array($id) )
        {
            $ids = join(',', $id);
            $data['employee_id'] = $this->user['employee_id'];
            $rows = BusinessComment::model() -> updateAll($data, "id IN({$ids})");
        }
        //单个操作
        else
        {
        	$data['employee_id'] = $this->user['employee_id'];
            $rows = BusinessComment::model() -> updateByPk($id, $data);
        }
    }
    if ( $rows )
    {   
    	Util::json(array('status' => 0, 'msg' => '修改成功'), 1);
    }
    else
    {
        Util::json(array('status' => 1, 'msg' => '修改失败'), 1);
    }
}

dialog是自定义的一个插件,里面包含的弹窗。可以忽略不看...

© 著作权归作者所有

大音希声
粉丝 1
博文 34
码字总数 12496
作品 0
北京
私信 提问
Yii入门指导(四):强大的“小物件”

1,修改默认的控制器 Yii的默认应用: 所有的配置都可以在main.php中进行配置,那么修改默认的控制器就是在main.php中增加如下代码: 'defaultController' => '', //修改默认控制器 Yii模块:...

Koma
2014/10/24
1K
1
使用Yii2时遇到的实际问题

最近一直在学习Yii2框架,可能是一直以来对它的青睐,让我难以对其它框架再产生兴趣,学习中遇到了许多问题,于是把问题和解决办法也记录下来,这样方便以后复习和交流。 ## 目录 扩展XmlRe...

小田天
2016/12/09
64
0
reids之YII常见使用问题

首先YII的框架包中并不含redis部分,需要自己配置和安装。 第一部分:Mac下YII框架的redis安装与配置 1.安装redis 方法一: 在没有安装YII的时候,可以通过修改composer的json文件实现修改安...

0_0Loong
2017/10/19
55
0
选择 Yii 2 框架的 7 个理由

去年,SitePoint网站发布了一篇文章重点介绍了一些顶尖的PHP开发框架。 排名第四的是Yii(发音同Yee)框架。 那时Yii框架最新的版本是1.1.14。最近,Yii 2.0版发布了,你可以在产品中使用2.0...

oschina
2014/10/16
18.4K
66
yii下多条件多表组合查询以及自写ajax分页

多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用。 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组。当任何一个复选框被勾选上...

吕亚辉
2015/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
405
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
4
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
3
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
7
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部