Yii經過Ajax修改字段值的方法

Ajax修改狀態:

HTML部分php

<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是自定義的一個插件,裏面包含的彈窗。能夠忽略不看...
相關文章
相關標籤/搜索