【问题标题】:Yii ajax issuesYii ajax 问题
【发布时间】:2015-02-02 10:22:12
【问题描述】:

我之前创建了一个question,我想在其中了解在 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'

我现在哪里错了?

【问题讨论】:

    标签: javascript php jquery ajax yii


    【解决方案1】:

    您似乎忘记了 URL 周围的引号:

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

    【讨论】:

    • 引用后输出控制器的输出。很好。
    【解决方案2】:

    首先

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

    【讨论】:

    • 嗯,很奇怪,但我得到了相同的结果。
    • 提供给 RegExp 构造函数 'doThing' 的标志无效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多