Как сделать вызов ajax в yii2?

В yii версии 1.14 мы использовали

CHtml::ajaxlink

для вызова ajax как насчет yii2?


person mohi    schedule 13.06.2014    source источник
comment
Требуется ли токен csrf в следующих ответах?   -  person Kshitiz    schedule 25.06.2014
comment
Вот пример   -  person Abylay    schedule 25.11.2015


Ответы (4)


Вы можете сделать ссылку ajax, например

 Html::a('Your Link name','controller/action', [
'title' => Yii::t('yii', 'Close'),
    'onclick'=>"$('#close').dialog('open');//for jui dialog in my page
     $.ajax({
    type     :'POST',
    cache    : false,
    url  : 'controller/action',
    success  : function(response) {
        $('#close').html(response);
    }
    });return false;",
                ]);
person Dency G B    schedule 13.06.2014
comment
Спасибо Dancy G B и NinjaCat за ваш ответ, но я получаю внутреннюю ошибку сервера при использовании jQuery.ajax({url: '../product/openfancybox', data: {id: quan}, success: function(data) { оповещение (данные); } }); - person mohi; 13.06.2014

From: http://www.yiiframework.com/wiki/665/overcoming-removal-of-client-helpers-e-g-ajaxlink-and-clientscript-in-yii-2-0/

Вы можете легко создавать и объединять все такие клиентские помощники для своих нужд в отдельные файлы JS. Используйте новые функции AssetBundle и AssetManager с объектом View в Yii2, чтобы управлять этими активами и тем, как они загружаются.

Кроме того, встроенные ресурсы (JS/CSS) можно зарегистрировать во время выполнения из представления. Например, вы можете явно имитировать функцию ajaxLink, используя встроенный javascript. Однако рекомендуется, если вы можете по возможности объединить клиентский код (JS/CSS) в отдельные файлы JS/CSS и загрузить их через AssetBundle. Обратите внимание, что CClientScript больше не нужен:

$script = <<< JS
$('#el').on('click', function(e) {
    $.ajax({
       url: '/path/to/action',
       data: {id: '<id>', 'other': '<other>'},
       success: function(data) {
           // process data
       }
    });
});
JS;
$this->registerJs($script, $position);
// where $position can be View::POS_READY (the default), 
// or View::POS_HEAD, View::POS_BEGIN, View::POS_END
person NinjaCat    schedule 13.06.2014

$.get( "' . Url::toRoute('controller/action') . '", { item: $("#idoffield").val()} ) /* to send the parameter to controller*/
                        .done(function( data )
                            {
                                 $( "#lists" ).html( data );
                                    }) 

и дайте списки идентификаторов для div

<div id="lists"></div>

для получения дополнительной информации посетите https://youtu.be/it5oNLDNU44

person Community    schedule 24.03.2017

person    schedule
comment
Хотя этот код может ответить на вопрос, было бы лучше включить некоторый контекст, объясняющий, как он работает и когда его использовать. Ответы, содержащие только код, в долгосрочной перспективе бесполезны. - person Bono; 18.04.2016
comment
Ну, это вообще не отвечает на вопрос. - person osullic; 05.06.2018