Yii Manual Ajax Post

时间:2015-10-23 15:52:52

标签: jquery ajax yii

我正在尝试手动发送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.');$(&quot;#mydialog&quot;).dialog(&quot;open&quot;); 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>

我不确定原因,我需要发布数据

1 个答案:

答案 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>
相关问题