yii Ajax调用不会纠正行动

时间:2016-09-19 18:54:25

标签: ajax yii2

我有以下链接在yii2中进行我的ajax调用:

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

但是,当我单击链接时,似乎没有调用正确的控制器操作。它还在调用网站/索引。任何想法我必须做什么才能使这个工作?我忘记了某种注释,或者我必须在某处定义我的新动作吗?

当我查看控制台时,它看起来是正确的: 请求网址:http://localhost:8080/site/ajaxShowMoreProducts

1 个答案:

答案 0 :(得分:2)

在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;",
    ]);