我有一个内联编辑器,它使用AJAX函数保存内容。这个函数调用我的Yii控制器来保存数据。这一切工作正常。Yii Ajax保存在URL重写后给出响应301
现在我使用.htaccess
和Yii urlManager缩短了我的网址。当我调用控制器保存来自我的AJAX函数的数据时,我得到了301响应。如果我将所请求的URL复制到我的浏览器中,则一切正常。有谁知道我的帖子为什么不能到达控制器?
AJAX功能:
$.post("../inhoud/opslaan/id/" + id, {
dataType: "json",
data : editor.getData(),
success : alert('Opgeslagen!'),
});
此网址应该工作以及我猜,但给出了同样的答复
"../index.php?r=inhoud/opslaan&id=" + id
的.htaccess:
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
urlManager:
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName' => false,
'rules'=>array(
'about' => 'site/page/view/about/',
'edit' => 'paginaitems/index/',
// default controller url setup
'<controller:w+>/<id:d+>'=>'<controller>/view',
'<controller:w+>/<action:w+>/<id:d+>'=>'<controller>/<action>',
'<controller:w+>/<action:w+>'=>'<controller>/<action>',
)
),
控制器动作:
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
'postOnly + delete', // we only allow deletion via POST request
);
}
array('allow',
'actions'=>array('create','update','opslaan'),
'users'=>array('@'),
),
public function actionOpslaan($id)
{
$model=$this->loadModel($id);
$model->content = $_POST['data'];
$model->save();
}
请求的URL是如下:http://本地主机/网站/ inhoud/opslaan/id/9 事情是,当我将这个URL复制到我的浏览器时,我可以正常访问页面。刚刚测试和绝对路径也给了301 – Daniel 2014-10-30 12:51:51
请将您的控制器的“规则”,“过滤器”和“accessRules”添加到您的示例中。 – lin 2014-10-30 12:55:50
添加访问规则。用户已登录.. – Daniel 2014-10-30 12:58:44