AJAX 在 codeigniter 上返回 NaN
AJAX is returnin NaN on codeigniter
所以我在这个路径上的控制器上有一个函数 usercontroller(controller name/ajaxp(controller function)。看起来像这样,没什么特别的:
public function ajaxp(){
echo "received";
}
这是我希望 AJAX 调用的路径。
我有一个 select 盒子,看起来像这样 :
<label for="exampleInputEmail1">Apartament</label>
<select onchange="showUser(this.value)" name ="txtApartament1" class="form-control">
<?php foreach($getEntry as $value) { ?>
<option><?php echo $value->apartament ?></option>
<?php }?>
</select>
onchange 将触发这个 AJAX :
<script>
function showUser(str) {
var url = <?php base_url();?>+"usercontroller/ajaxp?q="+str;
console.log(url);
if (str == "") {
document.getElementById("txtApartament1").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtApartament1").innerHTML = this.responseText;
}
};
xmlhttp.open("GET",url ,true);
xmlhttp.send();
}
}
</script>
但我的 url 将是:
(index):258 GET http://localhost/adminigniter1/NaN65 404 (Not Found)
代替:
http://localhost/adminigniter1/usercontroller/ajaxp
并且 console.log 输出将是:
NaN65
65 是 str 来自我的 select 盒子,我想发送给控制器。我认为 NaN 部分来自这部分:
var url = <?php base_url();?>+"usercontroller/ajaxp?q="+str;
在我尝试附加控制器函数路径的地方,该字符串被 NaN javascript 看到,而不是 return corect URL。有办法解决吗? (我对 javascript 很陌生)。
你的<option>
没有价值。
试试这个:
<option value="<?php echo $value->apartament ?>"><?php echo $value->apartament ?></option>
你的 url 定义必须是这样的:
var url = "<?php base_url();?>usercontroller/ajaxp?q="+str;
您缺少 javascript 字符串引号 <?php base_url();?>
尝试
var url = "<?php base_url();?>" + "usercontroller/ajaxp?q="+str;
所以我在这个路径上的控制器上有一个函数 usercontroller(controller name/ajaxp(controller function)。看起来像这样,没什么特别的:
public function ajaxp(){
echo "received";
}
这是我希望 AJAX 调用的路径。
我有一个 select 盒子,看起来像这样 :
<label for="exampleInputEmail1">Apartament</label>
<select onchange="showUser(this.value)" name ="txtApartament1" class="form-control">
<?php foreach($getEntry as $value) { ?>
<option><?php echo $value->apartament ?></option>
<?php }?>
</select>
onchange 将触发这个 AJAX :
<script>
function showUser(str) {
var url = <?php base_url();?>+"usercontroller/ajaxp?q="+str;
console.log(url);
if (str == "") {
document.getElementById("txtApartament1").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtApartament1").innerHTML = this.responseText;
}
};
xmlhttp.open("GET",url ,true);
xmlhttp.send();
}
}
</script>
但我的 url 将是:
(index):258 GET http://localhost/adminigniter1/NaN65 404 (Not Found)
代替:
http://localhost/adminigniter1/usercontroller/ajaxp
并且 console.log 输出将是:
NaN65
65 是 str 来自我的 select 盒子,我想发送给控制器。我认为 NaN 部分来自这部分:
var url = <?php base_url();?>+"usercontroller/ajaxp?q="+str;
在我尝试附加控制器函数路径的地方,该字符串被 NaN javascript 看到,而不是 return corect URL。有办法解决吗? (我对 javascript 很陌生)。
你的<option>
没有价值。
试试这个:
<option value="<?php echo $value->apartament ?>"><?php echo $value->apartament ?></option>
你的 url 定义必须是这样的:
var url = "<?php base_url();?>usercontroller/ajaxp?q="+str;
您缺少 javascript 字符串引号 <?php base_url();?>
尝试
var url = "<?php base_url();?>" + "usercontroller/ajaxp?q="+str;