Отключение оповещений при нажатии кнопки


Когда я нажимаю кнопку, оповещения не выполняются. Что я делаю не так? Может быть, мне нужно включить некоторые файлы js в раздел заголовка?

Вот мой вид формы входа в систему:

<?php echo CHtml::beginForm(); ?>

<div class="row">
<?php echo CHtml::label('username', 'username'); ?>
<?php echo CHtml::textField('username'); ?>
</div>
<div class="row">
<?php echo CHtml::label('password', 'password'); ?>
<?php echo CHtml::textField('password'); ?>
</div>
<?php
echo CHtml::ajaxButton('sign in', array('site/login'),array(
        'type'=>'POST',
        'update'=>'#mydiv',
        'beforeSend' => 'function(){
            alert("beforeSend");
        }',
        'complete' => 'function(){
            alert("complete");
            }',

));
?>
<?php echo CHtml::endForm(); ?>
<div id="mydiv" style="color:white;">...</div>

Вот мой код в контроллере:

public function actionLogin()
{
    $this->renderPartial('//blocks/user_info');
}

User_info просто повторяет some text

Author: 4444, 2012-02-08

9 answers

Не уверен, что это ваша проблема, но функция RenderPartial() плохо работает с AJAX. Это известная проблема Yii:

Http://www.yiiframework.com/forum/index.php/topic/24699-yii-20-ajaxrenderpartial-conflict/ http://www.yiiframework.com/forum/index.php?/topic/10427-ajax-clientscript

Я столкнулся с проблемой, когда попытался загрузить форму через AJAX, а затем отправить ее обратно с помощью кнопки cHTML::ajaxSubmit.

 6
Author: siliconrockstar, 2012-07-03 21:56:43

Попробуйте это

this->renderPartial('//blocks/user_info','', false, true);

 3
Author: 22francis, 2012-08-25 10:16:50

В моем коде это работает, попробуйте это

<?php
echo CHtml::ajaxSubmitButton('Save','your-url',array(
   'type'=>'POST',
   'dataType'=>'json',
   'success'=>'js:function(data){
       if(data.result==="success"){
          // do something on success, like redirect
       }else{
         $("#some-container").html(data.msg);
       }
   }',
));
?>
 3
Author: Ratnesh, 2015-04-28 12:15:56

Работает ли beforeSend? Что, если вы попробуете "успех" вместо "полный"?

 1
Author: Eirik Hoem, 2012-02-08 14:25:11

У меня тоже есть эта проблема (ошибка?). Попробуйте изменить "Перед отправкой" и другие обратные вызовы в этом представлении:

'beforeSend':'js:alert("complete");'

Без "функции(){}" и с "js".

P.S. Извините, мой английский плохой (

 1
Author: DuD, 2012-08-17 20:32:20

Это простой пример кнопки отправки Yii Ajax:

<?php
echo CHtml::ajaxSubmitButton(
'Submit',
'your-url',
array(
   'type'=>'POST',
   'dataType'=>'json',
   'success'=>'js:function(data){
       if(data.result==="success"){
          // do something on success, like redirect
       }else{
         $("#some-container").html(data.msg);
       }
   }',
)
);
?>

Более подробная информация на http://www.codexamples.com/90/chtml-ajaxsubmitbutton/

 1
Author: Truongnq, 2013-09-24 14:15:20

Кнопка отправки Ajax в поле зрения:

echo CHtml::ajaxSubmitButton('Save', array('/controller/action/id/' .     $id), array(
                'type' => 'post',
                'dataType' => 'json',
                'update' => '#mydiv',
                'beforeSend' => 'function(){}',
                'complete' => 'function(){}',
                'success' => 'js:function(data){
                    if(data.status=="1"){
                        html = "<div class=\"alert in alert-block fade alert-success\"><a class=\"close\" data-dismiss=\"alert\">x</a>"+data.msg+"</div>";
                        $("#status-msg").html(html);

                        }else{
                        html = "<div class=\"alert in alert-block fade alert-error\"><a class=\"close\" data-dismiss=\"alert\">x</a>"+data.msg+"</div>";
                        $("#status-msg").html(html);
                        }
                    }',
                    ), array('class' => "btn btn-primary")
            );

В действии контроллера:

        $return = array();
        $return['status'] = '1';
        $return['msg'] = 'Record Updated Successfully';

        echo CJSON::encode($return);
        Yii::app()->end();

Измените возвращаемый массив в соответствии с требованиями.

 0
Author: Rishabh, 2015-01-20 11:17:38

Вы должны установить четвертый параметр функции RenderPartial в значение true, чтобы Yii включал необходимые файлы JS для правильной работы представления.

$this->renderPartial('_form',array('model'=>$model), false, true);
 0
Author: Alex Jose, 2015-02-24 05:32:40

В функции контроллера вам нужно отправить еще 3 параметра (всего 4 параметра)

Ваша функция будет такой

public function actionLogin()
{
  this->renderPartial('//blocks/user_info','',false,true);
}
 0
Author: Shrish Shrivastava, 2015-07-03 13:02:16