如何使用CodeIgniter中的AJAX函数更改网页数据

问题描述 投票:4回答:1

我使用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函数加载视图

php jquery json ajax codeigniter
1个回答
2
投票

从你的原帖,我不明白“什么不行”。

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

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

解决方案是:

  1. 对于初始显示,让CI控制器返回视图 - 就像您已经在做的那样。
  2. 该视图将有一个“$(document).ready()”动作处理程序,它将进行Ajax调用 - 就像你已经在做的那样。
  3. 在视图中添加<div id="xyz"...>标记,以便从服务器接收“刷新数据”。
  4. 您的Ajax调用将调用另一个URL - 一个返回JSON数据的URL - 您想要“刷新”的数据。
  5. 您的Ajax处理程序将a)从响应中解析出JSON,然后b)使用它来更新DOM中的<div>

这里有些例子:

Using AJAX to reload only a Div

Let jQuery AJAX Change This Text

© www.soinside.com 2019 - 2024. All rights reserved.