Ajax修改状态:
控制器部分:
dialog是自定义的一个插件,里面包含的弹窗。可以忽略不看...
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是自定义的一个插件,里面包含的弹窗。可以忽略不看...