我已经看到了许多其他与此相关的问题,我已经尝试了他们的解决方案,但它仍然不起作用(相同的错误),这是我打开此线程的原因。
元素:1 视图 --> 发起 AJAX 请求。1 个控制器 --> 应处理 AJAX 请求并返回一个数组。
视图:
$(document).ready(function(){ $("button").click(function(){ $("#test").load("<? echo >Yii::app()-createUrl('test/ajax');?>"); }); });
因此,当我单击带有"id=test"的按钮时,它应该转到TestController并从actionAjax返回一个简单的数组。
我遇到的问题是,每当我单击 #test 按钮时,控制台(例如Google Chrome控制台)中都会看到403禁止日志。
在测试控制器中,我有以下访问规则:
public function accessRules() {
返回数组(array('allow', 'actions'=array('ajax'), 'users'=array('@'), ), ); }
当然,我确实有一个名为actionAjax的操作。
我在这里错过了什么吗?有什么规则是我应该考虑的吗?
我可以自由地在 Yii 中进行任何 Ajax 调用(加载,发布)还是应该遵循约定/函数?
感谢您对此进行调查。
数组
语法中缺少字符。
public function accessRules() {
return array(
array('allow',
'actions'=>array('ajax'),
'users'=>array('@'),
),
);
}
它似乎适用于这个:
$.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"); } });
感谢您的帮助!
> 禁止意味着您必须在控制器的访问规则中添加该规则:
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'); ?>");
});
});