【问题标题】:Yii 403 on Ajax callYii 403 上的 Ajax 调用
【发布时间】:2013-08-12 12:42:41
【问题描述】:

我有一个页面,其中列出了用户提出的票证/查询。每张票都有相关的注释,当用户点击一张票时我想显示这些注释。 (我想为此使用 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 似乎现在可以工作了! 但我仍然有问题。我无法让它传递数据。我总是收到“未定义索引”错误

【问题讨论】:

  • 检查链接是否正常工作??
  • 嗨,请参阅原始帖子的编辑
  • 我刚试过这个,正在更新我的帖子,就像你发布的那样。我发现了导致 500 错误的问题。
  • 不再有 500 错误。我现在的问题是我似乎无法让它发送“tid”变量是我需要使用的 id 号的数据
  • 'tid' 变化。它通过 onclick 传递给 js 函数。我刚刚通过在 url 末尾添加“&tno='+tid”来实现它。

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


【解决方案1】:

我们使用如下代码:

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

希望对您有所帮助。

【讨论】:

  • 嗨,这段代码有效,因为我不再遇到禁止错误。但它在页面加载时调用。单击元素时如何调用它?
【解决方案2】:

试试这个对我有用

 $.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");
            }
        }); 

【讨论】:

    【解决方案3】:

    找到了执行此操作的方法。 Ajax 很好。

    我需要在控制器内部更新 accessRules 函数,将“ajaxdialog”添加到正确用户组的允许操作中

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

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2012-10-31
      • 2017-12-30
      • 2012-07-17
      • 1970-01-01
      相关资源
      最近更新 更多