Yii Framework 1.1.14 - 不允许AJAX请求 - 403 Forbidden

时间:2013-10-16 16:13:33

标签: php ajax jquery yii

我已经看到了许多与此问题相关的其他问题,我已经尝试了他们的解决方案,但它仍然无效(同样的错误),我打开这个帖子的原因。

元素: 1查看 - >发起AJAX请求。 1控制器 - >应该处理AJAX请求并返回一个数组。

查看:

  $(document).ready(function(){
      $("button").click(function(){
              $("#test").load("<? echo >Yii::app()-createUrl('test/ajax');?>");
              });             

  });

所以当我点击一个带有“id = test”的按钮时,它应该转到TestController并从actionAjax返回一个简单的数组。

我遇到的问题是每当我点击#test按钮时,在控制台(例如谷歌Chrome控制台)中都会看到403 Forbidden日志。

在TestController中,我有以下访问规则:

  

public function accessRules(){
       返回数组(

 array('allow',

       'actions'=array('ajax'),

       'users'=array('@'),

 ),
 );    }

当然,我确实有一个名为actionAjax的动作。

我在这里遗漏了什么吗?是否有任何我应该考虑的规则?

我可以自由地在Yii中进行任何Ajax调用(加载,发布..)或者我应该遵循一个约定/函数吗?

感谢您对此进行调查。

3 个答案:

答案 0 :(得分:0)

您在数组语法中缺少字符。

public function accessRules() {
return array(
array('allow',
   'actions'=>array('ajax'),
   'users'=>array('@'),
     ),
);
}

答案 1 :(得分:0)

似乎可以使用这个:

  

$。AJAX({

        url:"<?php echo Yii::app()->createUrl('test/ajax');?>",

        data:{},

        type:"POST",

        dataType:"html",

        success:function(response){

             $('#test').html(response);

        },

        error:function(){

             alert("Failed request data from AJAX request");

        }

    });

感谢您的帮助!

答案 2 :(得分:0)

禁止意味着您必须在控制器的accessRules中添加该规则:

class TestController extends Controller
{
    public function accessRules()
    {
        return array(
            array('allow',
                'actions' => array('ajax'),
                'users' => array('@'),
            ),
            array('deny',
                'users' => array('*'),
            ),
        );
    }
}

看一下你的代码,因为它充满了拼写错误:

$(document).ready(function(){
    $("button").click(function(){
        $("#test").load("<? echo Yii::app()->createUrl('test/ajax'); ?>");
    });             
});