yii вызов Ajax не будет корректным действием

У меня есть следующая ссылка для вызова ajax в yii2:

echo Html::a('Load more','ajaxShowMoreProducts', [
    'onclick'=>"console.log('Load more');
        $.ajax({
            type:'POST',
            cache: false,
            url: 'ajaxShowMoreProducts',
            success: function(response) {
                console.log('suc');
            }
        });return false;",
]);    

Затем у меня есть действие в моем SiteController:

/**
 * @return string|\yii\web\Response
 */
public function actionAjaxShowMoreProducts() {
    var_dump('in');die;
    $params = [];

    $productModel = new Product();
    $params['products'] = $productModel->getAll();

    $this->renderPartial('partialProductItem', $params);
}

Однако, когда я нажимаю на ссылку, кажется, что правильное действие контроллера не вызывается. Он все еще вызывает site/index. Любые идеи, что я должен сделать, чтобы заставить это работать? Я забыл какую-то аннотацию или, может быть, мне нужно где-то определить мое новое действие?

Когда я смотрю в консоль, все выглядит правильно: URL-адрес запроса: http://localhost:8080/site/ajaxShowMoreProducts


person strangeQuirks    schedule 19.09.2016    source источник


Ответы (1)


В yii2 вы должны использовать правильную нотацию для URL-адреса действия (в URL-адресе, вызывающем si, не используется camelNotation, но слова разделяются - (минус)

  echo Html::a('Load more','ajax-show-more-products', [

и в ajax URL тоже

 url: 'ajax-show-more-products',

или попробуйте использовать Url Helper

use yii\helpers\Url;


 ....

        echo Html::a('Load more', Url::to(['/site/ajax-show-more-products']),  [
        'onclick'=>"console.log('Load more');
            $.ajax({
                type:'POST',
                cache: false,
                url: '" . Url::to(['/site/ajax-show-more-products']) . "',
                success: function(response) {
                    console.log('suc');
                }
            });return false;",
    ]);
person scaisEdge    schedule 19.09.2016
comment
Я пробовал это, но он все еще идет в индекс, хотя URL-адрес: URL-адрес запроса: localhost :8080/сайт/ajax-show-more-products - person strangeQuirks; 19.09.2016
comment
Ах вот и получилось! Спасибо. Угадайте, что чистые URL-адреса не работают. Это сработало: URL-адрес запроса: localhost:8080/index.php ?r=site%2Fajax-show-more-products - person strangeQuirks; 19.09.2016