我正在使用ajaxSubmitButton将数据发送到我的控制器。然后,该控制器操作在事务中生成两个插入语句。一切正常。我现在想要的是,一旦交易完成后重定向到新视图,但我无法使其工作。
当我点击我的按钮时,处理了交易,但我仍然在同一页面上。我也尝试过使用'更新'在页面的按钮和包装部分内,但没有内容更新。这不是我最终的目标,因为我想最终呈现一个全新的视角。
这是我的......
查看
echo CHtml::ajaxSubmitButton('submit',
array('/player/mark'),
array(
'type'=>'POST',
'data' => array(...),
));
CONTROLLER
public function actionMark()
{
$connection = yii::app()->db;
$transaction=$connection->beginTransaction();
try
{
$connection = yii::app()->db;
$sql1 = "INSERT ...";
$command=$connection->createCommand($sql1);
...
$command->execute();
$connection = yii::app()->db;
$sql2 = "INSERT ...";
$command=$connection->createCommand($sql2);
...
$command->execute();
$transaction->commit();
$this->redirect(array('manage')); // THIS IS NOT WORKING
}
catch(Exception $e)
{
$transaction->rollBack();
$this->refresh;
}
}
答案 0 :(得分:6)
由于您使用的是ajax,因此重定向无法正常工作。
试试这段代码:
echo CHtml::ajaxSubmitButton('submit',
array('/player/mark'),
array(
'type'=>'POST',
'data' => array(...),
'success' => 'js:function(){window.location="your_url"}',
));
将* your_url *替换为您想要重定向到
的网址答案 1 :(得分:1)
您应该在运行成功后添加window.location js。 参考this ajax submition button example:
echo CHtml::ajaxSubmitButton(
'Submit',
'/post/ajax',
array(
'type'=>'POST',
'dataType'=>'json',
'success'=>'js:function(data){
if(data.result==="success"){
window.location="your_url"
}else{
$("#some-container").html(data.msg);
}
}',
)
);