在Yi2中尝试通过javascript获取自动填充文本框时获取空值

在Yi2中尝试通过javascript获取自动填充文本框时获取空值,javascript,php,yii2,Javascript,Php,Yii2,我试图在下拉字段中填充数据时填充文本框。但我的结果是null。当我传递'id'时,它返回值,但当我传递名称时,它返回null 控制器 public function actionGetForProduction($catid) { $bottle = Productnames::findOne($catid); echo Json::encode($bottle); } Javascript代码的_形式 <?php $script = &l

我试图在下拉字段中填充数据时填充文本框。但我的结果是null。当我传递'id'时,它返回值,但当我传递名称时,它返回null

控制器

public function actionGetForProduction($catid)
    {
        $bottle = Productnames::findOne($catid);
        echo Json::encode($bottle);
    }
Javascript代码的_形式

<?php
$script = <<< JS
$('#catid').change(function(){   
    var catid = $(this).val();

     $.get('index.php?r=production/productnames/get-for-production',{ catid : catid }, function(data){
        alert(data);

    });
});
JS;
$this->registerJs($script);
?>

错误截图

如果默认情况下将参数作为字符串传递给findOne(),则它是一个主键字段。在您的情况下,必须像
findOne(['catid'=>$catid])一样作为数组传递

但如果希望控制器接受id或名称,请尝试以下操作:

public function actionGetForProduction()
        {
            if($id=Yii::$app->request->get('id')){
                 $bottle = Productnames::findOne($id);
               }
            elseif($catid=Yii::$app->request->get('catid')){
                 $bottle=Productnames::findOne(['catid'=>$catid]);
               }
            echo Json::encode($bottle);
        }

默认情况下,若将参数作为字符串传递给findOne(),则它是一个主键字段。在您的情况下,必须像
findOne(['catid'=>$catid])一样作为数组传递

但如果希望控制器接受id或名称,请尝试以下操作:

public function actionGetForProduction()
        {
            if($id=Yii::$app->request->get('id')){
                 $bottle = Productnames::findOne($id);
               }
            elseif($catid=Yii::$app->request->get('catid')){
                 $bottle=Productnames::findOne(['catid'=>$catid]);
               }
            echo Json::encode($bottle);
        }