AJAX在codeigniter上返回NaN

时间:2017-01-30 15:54:41

标签: javascript php ajax codeigniter-3

所以我在这个路径上的控制器上有一个函数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:

&#13;
&#13;
<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;
&#13;
&#13;

但我的网址是:

(index):258 GET http://localhost/adminigniter1/NaN65 404 (Not Found) 

绝对:

http://localhost/adminigniter1/usercontroller/ajaxp

console.log输出将是:

  

NaN65

65是我想要发送到cotroller的选择框中的实际 str 。我认为NaN部分来自这一部分:

&#13;
&#13;
var url = <?php base_url();?>+"usercontroller/ajaxp?q="+str;
&#13;
&#13;
&#13;

当我尝试附加控制器函数路径时,NaN会通过javascript查看该字符串,并且不会返回corect URL。有办法解决它吗? (我用javascript很新)。

2 个答案:

答案 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;