Yii ajax 问题

Yii ajax issues

我之前创建了一个 ,我想在其中了解 Yii 中 ajax 的工作原理。所以,我正在尝试实施一个答案。 我创建了控制器并放入了控制器目录:

<?php
class AjaxController extends CController
{
    public function actionDoThing()
    {
        // Get request object
        $request = Yii::app()->request;

        // Check if request is acceptable
        if ($request->isPost && $request->isAjaxRequest)
        {
            echo CJSON::encode(array('hello'=>'world'));
        }
        // else
        // {
        //     throw new CHttpException(403);
        // }
    }
}
?> 

我也看到了这个带有脚本的片段。

<script>
$(document).on('click','div.lessonDiv', function() {
    $.ajax({
        type: "POST",
        url: <?php /*Also I tried just DoThing instead of actionDoThing, this doesn't work*/echo $this->createUrl('AjaxController/actionDoThing'); ?>,
        success: function(data, textStatus, jqXHR) 
        {
            console.log(data);
        }
    });
});
</script>

不知道出了什么问题,但控制台显示:

Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'actionDoThing'

我现在哪里错了?

您似乎忘记了 URL:

周围的引号
$.ajax({
    type: "POST",
    url: "<?php echo $this->createUrl('AjaxController/actionDoThing'); ?>",
    success: function(data, textStatus, jqXHR) {
        console.log(data);
    }
});

首先

将Js代码包裹在里面

$(function{
// your code here
});

所以你的代码看起来像

 $(function(){
    $(document).on('click','div.lessonDiv', function() {
        $.ajax({
            type: "POST",
            url: "<?php echo $this->createUrl('AjaxController/actionDoThing'); ?>",
            success: function(data, textStatus, jqXHR) 
            {
                console.log(data);
            }
        });
    });

});

第二件事:

AjaxController/actionDoThing改为ajax/doThing

所以你的最终代码会像

    $(function(){
    $(document).on('click','div.lessonDiv', function() {
        $.ajax({
            type: "POST",
            url: "<?php echo $this->createUrl('ajax/doThing'); ?>",
            success: function(data, textStatus, jqXHR) 
            {
                console.log(data);
            }
        });
    });

});