ajaxSubmitButton: действие контроллера не перенаправляет в Yii - PullRequest
2 голосов
/ 17 февраля 2012

Я использую ajaxSubmitButton для отправки данных на мой контроллер. Это действие контроллера делает две инструкции вставки в транзакции. Все это работает просто отлично. Теперь я хочу, чтобы после завершения транзакции было перенаправлено новое представление, но я не могу заставить это работать.

Когда я нажимаю кнопку, транзакция обрабатывается, но я остаюсь на той же странице. Я также пытался использовать «обновление» внутри кнопки и обтекания части страницы, но не обновлял содержимое. Впрочем, это не то, что мне нужно, потому что я хочу закончить рендерингом совершенно нового представления.

Вот что у меня есть ...

VIEW

 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;
        }
}

Ответы [ 2 ]

6 голосов
/ 17 февраля 2012

Перенаправление не работает, потому что вы используете ajax.

Попробуйте этот код:

echo CHtml::ajaxSubmitButton('submit',          
        array('/player/mark'), 
        array(
                'type'=>'POST',
                'data' => array(...),
                'success' => 'js:function(){window.location="your_url"}', 
        ));

Замените * your_url * на URL, который вы хотите перенаправить на

1 голос
/ 24 сентября 2013

Вы должны добавить window.location js после успешного запуска. Ссылка на пример кнопки ajax submition :

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);
           }
       }',
    )
);

Больше Примеры Yii

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...