2015-09-02 16:53:52 4220次浏览 8条回答 0 悬赏 25 金钱

modules\article\views\admin\action.php代码

<script>
    function checked($id){
        var vals = $("#name").val();
        var id=$id;
        $.ajax({
            type:'post',
            url:"<?= yii\helpers\Url::to(['admin/up']) ?>",路径老是出错
            data:{name:vals,id:id},

            success:function(msg){
                alert(msg);
                //$("#name").val(vals);
            }
        });
    }
</script>

  <?= app\widgets\GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
       ['class' => 'yii\grid\CheckboxColumn'],
       'title',
        [
            'attribute' => 'cate',
            'format' => 'raw',
            'value' => function($model){
                return Html::dropDownList("cates[{$model->id}]",$model->cate,\common\models\Article::$cates,['id'=>'name','onchange' =>"checked($model->id)"]) ;
            }
        ],
      [
            'class' => 'app\widgets\ActionColumn',
            'template' => '{update} {view} {delete}',
       ],
    ]

])?>

modules\article\controllers\AdminController.php代码,我建了一个up方法,想通过它来修改ajax传过来的值

   public function actionUp(){
        
    }

请各位大神帮忙解决一下,哪里有问题,控制文件里帮忙完善起来。

最佳答案

  • 师阳 发布于 2015-09-03 00:06 举报

    你说的路径出错是报的是 404还是400。如果是400,提交的数据无法被验证的话,那无关路径,可能是yii本身开启了 csrf,只需关闭 csrf认证,或在ajax那里提交csrf 就可以了。
    关闭方法,在你的 AdminController.php 里加入

    public $enableCsrfValidation = false;
    

    你可以参考这个:http://www.yiichina.com/tutorial/449

    1 条回复
    回复于 2015-09-03 09:37 回复

    OK 谢谢大神

  • 回答于 2015-09-02 17:08 举报

    <?= Url::to(['admin/up']) ?>

    1 条回复
    回复于 2015-09-02 17:09 回复

    这样的话会报 Class 'Url' not found 找不到

  • 回答于 2015-09-02 17:09 举报

    use yii\helpers\Url; 命名空间加到顶部

    2 条回复
    回复于 2015-09-02 17:10 回复

    OK 我试一下 谢谢

    回复于 2015-09-02 17:16 回复

    好像还是不管用 我在控制器里的up方法里随便打印什么东西,直接没反应

  • 回答于 2015-09-02 17:19 举报

    代码复制出来看下

    2 条回复
    回复于 2015-09-02 17:20 回复

    哪个的代码?控制器的还是ajax的

    回复于 2015-09-02 17:20 回复

    控制器代码:

    public function actionUp(){
            var_dump('11111111111111111111111111111111111111111111111111');
            $id = Yii::$app->request->post('id');
            $name = Yii::$app->request->post('name');
            $model = Article::findOne($id);
            $model->cate = $name;
            if($model->save()){
                return $this->succ();
            }else{
                return $this->addError('cate', '修改失败');
            }
        }
    
  • 回答于 2015-09-02 17:20 举报

    这是异步调用 返回的是json 打印不出来的

  • 回答于 2015-09-02 17:24 举报

    admin/up&name=1&id=2 这个url访问看下

    1 条回复
    回复于 2015-09-02 17:27 回复

    什么效果都没有,下拉框点击了别的选项之后,就显示那个选项,其他什么效果都没有。
    页面一刷新,选项又回到没改之前的了

  • 回答于 2015-09-02 17:29 举报

    你访问的url复制出来看下

    2 条回复
    回复于 2015-09-02 17:31 回复

    http://localhost/article/admin/up&name=1&id=2.html
    这是f12之后看到的url

    回复于 2015-09-02 17:33 回复

    F12查看html显示Not Found (#404): Unable to resolve the request: article/admin/up&name=1&id=2

  • 回答于 2015-09-02 17:31 举报

    var_dump('11111111111111111111111111111111111111111111111111'); 改成 echo 1;die;

    3 条回复
    回复于 2015-09-02 17:36 回复

    改了之后没效果

    回复于 2015-09-02 17:56 回复

    Bad Request (#400): 您提交的数据无法被验证。 他现在报这个错 是什么原因啊

    回复于 2015-09-03 00:11 回复

    yii2 默认开启了 csrf 验证。

您需要登录后才可以回答。登录 | 立即注册
辰枫夜雨
助理

辰枫夜雨

注册时间:2015-08-11
最后登录:2017-06-23
在线时长:18小时59分
  • 粉丝10
  • 金钱0
  • 威望0
  • 积分180

热门问题