所以我在这个路径上的控制器上有一个函数usercontroller(控制器名称/ ajaxp(控制器函数)。看起来像这样,没什么特别的:
public function ajaxp(){
echo "received";
}
这是我希望我的AJAX调用获取的路径。
我有一个看起来像这样的选择框:
<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>
&#13;
但我的网址是:
(index):258 GET http://localhost/adminigniter1/NaN65 404 (Not Found)
绝对:
http://localhost/adminigniter1/usercontroller/ajaxp
console.log输出将是:
NaN65
65是我想要发送到cotroller的选择框中的实际 str 。我认为NaN部分来自这一部分:
var url = <?php base_url();?>+"usercontroller/ajaxp?q="+str;
&#13;
当我尝试附加控制器函数路径时,NaN会通过javascript查看该字符串,并且不会返回corect URL。有办法解决它吗? (我用javascript很新)。
答案 0 :(得分:2)
您的<option>
没有任何价值。
试试这个:
<option value="<?php echo $value->apartament ?>"><?php echo $value->apartament ?></option>
你的网址定义必须是这样的:
var url = "<?php base_url();?>usercontroller/ajaxp?q="+str;
答案 1 :(得分:1)
您缺少<?php base_url();?>
附近的javascript字符串引号
试
var url = "<?php base_url();?>" + "usercontroller/ajaxp?q="+str;