获取输出但也首先在 AJAX 中获取 undefined
Getting the output but also getting undefined first in AJAX
我有一个下拉菜单,当它发生变化时,我会根据下拉菜单的值调用 ajax。如果下拉 value
是 2
那么它将调用 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 之后加上 +=
符号.
我有一个下拉菜单,当它发生变化时,我会根据下拉菜单的值调用 ajax。如果下拉 value
是 2
那么它将调用 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 之后加上 +=
符号.