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

本文介绍如何利用Ajax技术实现对文章的审核状态修改和批量操作功能,包括单个文章的审核加精和删除,以及批量删除操作的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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是自定义的一个插件,里面包含的弹窗。可以忽略不看...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值