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;