我已经看到了许多与此问题相关的其他问题,我已经尝试了他们的解决方案,但它仍然无效(同样的错误),我打开这个帖子的原因。
元素: 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调用(加载,发布..)或者我应该遵循一个约定/函数吗?
感谢您对此进行调查。
答案 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'); ?>");
});
});