获取输出但也首先在 AJAX 中获取 undefined

Getting the output but also getting undefined first in AJAX

我有一个下拉菜单,当它发生变化时,我会根据下拉菜单的值调用 ajax。如果下拉 value2 那么它将调用 ajax 并显示数据。

现在我的问题是,1) 我正在获取输出,但也未定义。

2) 获得输出后,我必须在 if-else 条件下显示,但它只显示 undefined.

控制器

public function getRMname(){
  $result= $this->Employee_model->getRMname();
  if($result)
    {
      foreach ($result as $key => $value) {
              $data[] = array('rmfirstname' =>$value->firstname , 'rmlastname'=>$value->lastname,'rmid'=>$value->id);
      }
    }
    else
    {
      $data = "false"; 
    } 
       echo json_encode($data); 
   }

脚本

$(document).on('change', '.pp_Status', function(event) {
  var addrm;
  if ($(this).val() == '2') {
    $.ajax({
      type: "POST",
      url: baseUrl + "/Employee_control/getRMname",
      //data: {},
      dataType: 'json',
      success: function(response) {
        addrm += '<select name="addrm" class="input-wrapper"><option value="" selected disabled>Select</option>';
        $.each(response, function(key, data) {
          addrm += '<option value="' + data.rmid + '">' + data.rmfirstname + ' ' + data.rmlastname + '</option>';
        });
        addrm += '</select>';

      }
    });
  } else {
    addrm = '';
  }
  if (somecondition) {

} else {
 echo addrm;
    //displaying addrm variable here
  }
});

为了安全起见,将变量定义为 var addrm = '';

去掉 else 状态,这样它只在选择的选项为 2 时运行。

最后,检查所选选项是否为 2 的块将被执行,而不管所选选项如何,因为您没有正确定位。

应该是:

if( $(this).find(':selected').val() == '2' ) {}

因为您没有检查所选值,请尝试控制台日志记录以检查返回的值:

 console.log($(this).find(':selected').val());

在定义变量

中使用 ='';

var addrm=''; 而不是

var addrm;

因为 Variable 意味着任何可以 vary 的东西,你应该首先声明 empty String 然后在 String Concatenate 之后加上 += 符号.