关于Ajax调用的Yii 403

时间:2013-08-12 12:42:42

标签: jquery ajax yii http-status-code-403

我有一个页面,其中列出了用户提出的故障单/查询。每个票证都有关联的注释,我想在用户点击票证时显示这些注释。 (我想为此使用CJuiDialog。)

为了节省页面加载时间,我想使用ajax来填充对话框。

我正在使用以下代码,它始终返回错误:“else:undefined”。 Chrome的控制台会返回错误:无法加载资源:服务器响应状态为403(禁止)

$.ajax({
    url: '<?php echo Yii::app()->createAbsoluteUrl("tblTickets/AjaxDialog"); ?>',
    type: "POST",
    data: {tno: tid},  
    error: function(xhr,tStatus,e){
        if(!xhr){
            alert(" We have an error ");
            alert(tStatus+"   "+e.message);
        }else{
            alert("else: "+e.message); // the great unknown
        }
    },
    success: function(resp){
        alert('success');  // deal with data returned
    }
});

我需要一些额外的东西让它起作用吗?

编辑:我对accessRules进行了添加,导致了更改。我不再得到403错误而是500错误。 我是Yii的新手,我试图通过ajax在TicketsController中调用一个名为actionAjaxDialog的函数。

EDIT2:好的500错误是由它调用的PHP函数引起的。 ajax似乎现在正在运作! 但我还是有问题。我无法通过数据传递它。我总是得到一个'未定义的索引'错误

3 个答案:

答案 0 :(得分:0)

我们正在使用以下代码:

<?php
Yii::app()->clientScript->registerScript('search', "
    $.ajax({
                    url: '".Yii::app()->createUrl("/invoice/create")."',
                    data:'tid='+tname,
                    success: function(){
                      alert('success');
                      return false;
                    }
               });
");
?>

希望这对你有所帮助。

答案 1 :(得分:0)

试试这个对我有用

 $.ajax({
            url:"<?php echo Yii::app()->createUrl('/controllername/actionname');?>",
            data:{},//data for throwing the expected url
            type:"POST",//you can also use GET method
            dataType:"html",//you can also specify for the result for json or xml
            success:function(response){
                 $('#news').html(response);
            },
            error:function(){
                 alert("Failed request data from ajax page");
            }
        }); 

答案 2 :(得分:0)

找到了这样做的方法。阿贾克斯很好。

而是在Controller中我需要更新accessRules函数,将'ajaxdialog'添加到正确用户组的允许操作

array('allow',  // allow all users to perform 'index' and 'view' actions
    'actions'=>array('index','view','ajaxdialog'),
    'users'=>array('*'),
),