如何在CodeIgninter中使用AJAX功能更改网页数据

时间:2019-03-03 19:20:37

标签: php jquery json ajax codeigniter

我正在使用CodeIgniter作为我的Web框架,并且从控制器开始,我正在使用$this->load->view('Apartments_Hotels', $data来首次加载数据。但是现在我需要在视图中使用ajax函数重新加载页面以提供新数据。

视图中的Ajax函数

$(document).ready(function() {
    $(".filter_checkbox").click(function(){
        var filter = [];
        $.each($("input[name='filter']:checked"), function(){
            filter.push($(this).val());
        });
        $.ajax({
            async: false,
            type: 'POST',
            data: {
                filter: filter
            },
            url: "<?php echo base_url(); ?>index.php/ListingsController/showFilterListings",
            success: function (response) {

            }
        });
    });
});

控制器功能

public function showFilterListings(){echo $this->load->view('Apartments_Hotels', $data, TRUE);

}

但这不起作用。谁能帮助我使用ajax函数一次又一次地加载视图

1 个答案:

答案 0 :(得分:2)

从您的原始帖子中,我不明白什么是“无效”。

您已经知道如何显示视图(通过调用控制器)。您已经知道如何使用Ajax(从服务器获取信息),以及如何使用jQuery(为视图浏览器渲染DOM)。

问题是您不想刷新整个页面。在您当前的Ajax调用中,这似乎正是您正在做的事情。

解决方案是:

  1. 要进行初始显示,请让CI控制器返回一个视图-就像您已经在做的一样。

  2. 该视图将具有“ $(document).ready()”动作处理程序,该处理程序将进行Ajax调用-就像您已经在做的一样。

  3. 在视图中添加一个<div id="xyz"...>标签,以便从服务器接收“刷新数据”。

  4. 您的Ajax调用将调用一个不同 URL-一个返回 JSON 数据的URL-您要“刷新”的数据。

    < / li>
  5. 您的Ajax处理程序将a)从响应中解析出JSON,然后b)使用它来更新DOM中的<div>

以下是一些示例:

Using AJAX to reload only a Div

Let jQuery AJAX Change This Text