Ajax 和 codeigniter 框架问题

Posted

技术标签:

【中文标题】Ajax 和 codeigniter 框架问题【英文标题】:Ajax and codeigniter framework issues 【发布时间】:2018-07-20 09:13:53 【问题描述】:

我在使用 AJAX 和 CodeIgniter 时遇到问题,我想获取数据库中的用户总数,但没有找到数据。

我的控制器:

public function TotalUsers()
        

            if($this->input->post("action")=='GetTotalUsers')
            
                $this->load->model("usersmodel");
                $totalcount=$this->usermodel->GetTotalUserCount();
                echo $totalcount;
            

        

我的模特:

public function GetTotalUserCount()
        
            $query = $this->db->get("users");
            return $query->num_rows();
        

我的 html 和 jquery:

  <div class="col-lg-3 col-xs-6">
                        <!-- small box -->
                        <div class="small-box bg-yellow">
                            <div class="inner">
                                <h3 id="totaluser"></h3>

                                <p>Total Users</p>
                            </div>
                            <div class="icon">
                                <i class="ion ion-person-add"></i>
                            </div>
                            <a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
                        </div>
                    </div>

<script>
    $(document).ready(function () 

        GetTotalUsersCount();

        function GetTotalUsersCount() 
            var action='GetTotalUsers';
            $.ajax(
                url:"<?php echo base_url()?>Users/TotalUsers",
                method:"post",
                data:action:action,
                success:function (data) 
                    $("#totaluser").html(data)
                
            )
        

       )


</script>

【问题讨论】:

先忘记 AJAX。当您手动浏览到 /Users/TotalUsers 时会发生什么? 没有空白页 所以你的 AJAX 不是问题。首先修复您的控制器操作。 那么附加的控制器错误是什么 检查您的error_log。空白页通常表示 HTTP 500,这意味着服务器端出现问题。 【参考方案1】:

我认为您可能会在控制器期望它序列化时以 JSON 编码发送它,尽管我不确定。

$this-&gt;input-&gt;post("action") 上运行var_dump()

如果这没有给出GetTotalUsers,那么这就是你的问题。您需要将控制器设置为接受原始发布数据并解码为 json,序列化数据而不是使用 javascript 对象 (JSON),或者如果可能,只需删除有条件的操作,因为目前它看起来没有用显示。

【讨论】:

【参考方案2】:

我怀疑url: 没有评估到正确的值。还有一些语法错误(缺少分号)。试试这个 JavaScript。使用浏览器的“开发者工具”检查标题以查看帖子“去向”的位置以及发布的“动作”。

$(document).ready(function () 
    GetTotalUsersCount();
    function GetTotalUsersCount() 
        $.ajax(
            url: '<?php echo base_url("Users/TotalUsers"); ?>',
            method: "post",
            data: action: 'GetTotalUsers',
            success: function (data) 
                $("#totaluser").text(data);
            
        );
    
);

我很好奇你为什么使用 ajax 而不是简单地确定总计数并将其传递给视图的初始加载?

【讨论】:

【参考方案3】:

1.使用 Ctrl+Shift+I (或导航到当前页面控制>开发人员> 开发人员工具)或(使用右键单击您的页面,然后选择检查 元素)

2.转到“网络”标签

3.在“名称路径”列中找到您的ajax请求

4.点击具体的ajax链接

【讨论】:

以上是关于Ajax 和 codeigniter 框架问题的主要内容,如果未能解决你的问题,请参考以下文章

codeigniter ajax 错误用户电子邮件检查

Ajax 响应调用,404 Not Found

如何在codeigniter中使用ajax在mysql数据库中插入数据?

在使用codeigniter并从curl获取数据时在ajax中添加href

当数据在javascript codeigniter php中使用ajax成功功能时,如何禁用页面重新加载?

codeigniter和laravel框架