Yii Ajax on click


Yii Ajax on click

我在Yii上有一些应用程序。我想在单击div 时实现 ajax 调用。我找到了一些带有表单 ajax 验证的文档,但我不清楚,我该如何做我想做的事。这就是我所做的:

$(document).on('click','div.lessonDiv', function()
    {
       $.ajax(
        {
            type: "POST",
            url: "../../protected/controllers/AjaxController.php",
            success: function(data, textStatus, jqXHR)
            {
                console.log(data);
            }
        });
}

这说明该目录是被禁止的。我应该把能够与ajax交互的文件放在哪里?还是说有?
更新我使用的是 1.1 版。

你不应该直接调用文件,Yii 不是这样工作的。它是带有控制器和操作的MVC框架,它使用路由,也用于AJAX请求。因此,您应该向AjaxController添加一个操作并调用createUrl以获取其 URL。

.PHP

class AjaxController extends CController
{
    public funcion 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);
        // }
    }
}

.JS

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

我建议更仔细地阅读Yii指南。它也有俄语版本

试试这个

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

要了解 YII 中的 createUrl() 点击这里