实际上我使用了与ajax的depentdropdown列表,但它无法正常工作

时间:2017-08-30 06:14:09

标签: javascript php ajax yii2

实际上我正在创建一个依赖的下拉列表但是我的ajax js_base_url没有进入控制器。我不知道有什么问题。表名是system_detail和software_detail。我的控制器名称是SoftwaredetailController.php和SystemdetailController.php

我的ajax代码:

function getEmployee(id){
   $.ajax({ 
type:'POST',
url: JS_BASE_URL + 'systemdetail/get-employee',
data:{'id':id},
// dataType: 'text',
   success: function(data) {
       var options = '<option value="">Please Select</option>';       
    if ( data ) {
        var json = JSON.parse(data);           
            for (var i = 0; i < json.length; i++) {
            options +='<option value="'+json[i].system_id+'">'+json[i].system_id+'</option>'
            }
            $('#software_detail-system_id').html(options);
            return false;
        }
        $('#software_detail-system_id').html('');           
        $('#software_detail-system_id').html(options);

     },
});

}

我的控制器代码:

public function actionGetEmployee()
    {  
        echo"<i am here>";die;

    $postData = Yii::$app->request->post();
    // echo "<pre>";
    // print_r($postData['id']]);
    // die;
    $allSystemDetail = SystemDetail::find()
                ->where(['user_id' => $postData['id']])
                ->asArray()
                ->all();
    if ($allSystemDetail){
        return json_encode($allSystemDetail); 
        }else{
        return false;
    }

}

我的下拉列表列表代码:

 <?= $form->field($model, 'user_id')->dropDownList(
   ArrayHelper::map(Employee::find()->asArray()->all(),'id','employee_id'),
     [
        'onchange' => 'getEmployee(this.value)',
        'prompt'=>'Please Select',
     ])->label('Employee Id'); ?>

<?= $form->field($model, 'system_id')->dropDownList(
  ArrayHelper::map(SystemDetail::find()->asArray()->all(),'system_id','system_id'), 
 [ 'prompt' => 'Select System id']); ?>

1 个答案:

答案 0 :(得分:0)

你应该在JS代码中使用Url :: to(['controller / action']),如:

function getEmployee(id){
   $.ajax({ 
          type:'POST',
          url: "<?php echo yii\helpers\Url::to(['systemdetail/get-employee']); //url for ajax call ?>",
         data:{'id':id},
         // dataType: 'text',
         success: function(data) {
                var options = '<option value="">Please Select</option>';       
                if ( data ) {
                   var json = JSON.parse(data);           
                   for (var i = 0; i < json.length; i++) {
                   options +='<option value="'+json[i].system_id+'">'+json[i].system_id+'</option>'
                   }
                   $('#software_detail-system_id').html(options);
                   return false;
                 }
                 $('#software_detail-system_id').html('');           
                 $('#software_detail-system_id').html(options);

               },
         });