我正在尝试手动发送ajax post请求。我一直收到#34; 400 Bad Request"。我在我的localhost上使用yii 1.1.x.
以下是我的观点:
查看admin.php
<script type="text/javascript">
function findDealerSettings(did){
alert(did);
$.ajax({
type: 'POST',
url: '/dealers/ajaxDs',
data: did,
success: function (data) {
alert("Made it");
}
});
}
</script>
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'dealers-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'template' => '{summary}{pager}{items}{pager}{summary}',
'columns'=>array(
'name',
'address1',
'city',
'state',
'phone',
array(
'header'=>Yii::t('multi', 'Settings'),
'htmlOptions' => array('class' => 'button-column'),
'type'=>'raw',
'value'=> function($data) {
return '<a onclick="findDealerSettings('.$data->did.');$("#mydialog").dialog("open"); return false;" class="settings" title="Update Setting" href="#"><img src="/images/gear_sm.png" alt="Update Setting"></a>';
}
),
array(
'class'=>'EButtonColumnWithClearFilters',
'label'=>Yii::t('multi', 'Clear Search'),
),
),
));
?>
Controller - DealersController.php:
public function accessRules()
{
return array(
array('allow', // allow dealerSettings user to perform 'manage' action
'actions'=>array('manage'),
'roles'=>array('dealersettings')
),
array('allow', 'actions'=>array('dealercontextswitch'), 'roles'=>array('authenticated')),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete', 'create', 'view', 'update', 'ajaxDs'),
'roles'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
...
public function actionAjaxDs(){
if (!YII_DEBUG && !Yii::app()->request->isAjaxRequest) {
throw new CHttpException('403', 'Forbidden access.');
}
echo "Made it";
}
我必须为ajaxD添加accessRules才能访问ajaxDs
从这段代码中我可以使用js来提醒你。之后我收到了http://localhost/dealers/ajaxDs
的400 Bad Request错误当我真正去http://localhost/dealers/ajaxDs时,我得到一个页面,上面写着&#34;制造它&#34;,就像它应该的那样。
我不知道为什么我的ajax不起作用。
如何手动输入yii的ajax网址
任何帮助将不胜感激!
************** EDIT *****************
如果我删除了类型:&#39; POST&#39;它的工作原理
<script type="text/javascript">
aXDS = '<?php echo Yii::app()->createUrl('/dealers/ajaxDs'); ?>';
function findDealerSettings(did){
alert(did);
$.ajax({
//type: 'POST',
url: '/dealers/ajaxDs',
data: did,
success: function (data) {
alert("Made it");
}
});
}
</script>
我不确定原因,我需要发布数据
答案 0 :(得分:0)
你的路径可能有错误
<script type="text/javascript">
aXDS = '<?php echo Yii::app()->createUrl('/dealers/ajaxDs'); ?>';
function findDealerSettings(did){
alert(did);
$.ajax({
//type: 'POST',
url: <?php echo yii::app()->baseUrl . '/dealers/ajaxDs' ; ?>,
data: did,
success: function (data) {
alert("Made it");
}
});
}
</script>