【问题标题】:AJAX in codeigniter doesn't find base URLcodeigniter 中的 AJAX 找不到基本 URL
【发布时间】:2017-01-30 22:12:34
【问题描述】:

我的另一个问题是,代码是否正确,我的 AJAX 请求会到达我的控制器吗?

以下是代码的相关部分:

我的观点(我在 POST 表单上有这个,因为我想在另一个表上发送数据):

<script> var base_url = <?php echo base_url(); ?> </script>

<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>

在同一个视图中,这是我的 AJAX 部分:

function showUser(str) {
    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", base_url + "usercontroller/ajaxp?q="+str,true);
        xmlhttp.send();
    }
}

这是我的控制器 - usercontroller.php 函数:

public function ajaxp(){
echo "received";
}

我会收到这个错误:

(index):257 Uncaught ReferenceError: base_url is not defined 在 showUser (localhost/adminigniter1/:257:29) 在 HTMLSelectElement.onchange (localhost/adminigniter1/:205:89)

我的项目文件名为 codeigniter1!

我没有在 codeigniter 上设置任何配置文件。我是不是该 ?还有什么?

【问题讨论】:

  • 你加载了 url helper。
  • base_url 是函数而不是变量。它应该是 base_url()
  • 是 Hek: $autoload['helper'] = array('url', 'form');
  • Paul:我改了,还是一样的错误!
  • @Anakin Vader 试试下面的答案。

标签: javascript php ajax codeigniter-3


【解决方案1】:

像这样试试..

1.使用$this-&gt;load-&gt;helper('url')applicaiton/config/autoload.php.加载url助手

2.在application/config/config.php中设置base_url配置项

$config['base_url'] = 'your_url';

3.在你的脚本中。删除var。因为它创建变量为local。所以你不能使用内部函数。

base_url = <?php echo base_url();

或者var base_url = &lt;?php echo base_url(); ?&gt;放在showUser()函数里面。

更新

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

console.log(url);

xmlhttp.open("GET",url,true);
xmlhttp.send();

【讨论】:

  • 如果我这样做:,我会得到 Uncaught SyntaxError: Unexpected token : on the source ->
  • 在函数内尝试base_url
  • 似乎我不会遇到 url 问题,但是当我从源响应上的 url 生成链接时,我仍然会在 http 之后遇到“:”令牌的问题:base_url = http://localhost/adminigniter1/。我现在也会得到:(index):203 Uncaught ReferenceError: showUser is not defined(...)
  • 查看更新以及console.log(url); 上的输出?
  • 嗯,第二个选项 OR// 似乎有点用,我现在会得到(索引):258 GET localhost/adminigniter1/NaN56 404(未找到)和来自 console.log NaN56。所以这意味着 56 不是数字?
猜你喜欢
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 2012-01-24
  • 2015-01-25
  • 2021-08-22
相关资源
最近更新 更多