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

Posted

技术标签:

【中文标题】如何使用 CodeIgniter 中的 AJAX 函数更改网页的数据【英文标题】:How to change data of the webpage using AJAX function in CodeIgninter 【发布时间】:2019-07-25 03:30:38 【问题描述】:

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

【问题讨论】:

在 Chrome 浏览器中调用您的 PHP 页面,并激活 F12(Chrome 开发者工具)。您可以将debugger; 语句添加到“$(document).ready()”,以便更轻松地单步执行浏览器端 JS 代码。 Q:你的 JS 在 Chrome 中看起来还可以吗? 我试图提醒响应,它显示了我需要重新加载的整个页面,其中包括所有 html 和 HEAD 标签。但我不知道如何显示该页面 【参考方案1】:

从您的原始帖子中,我不明白什么是“不起作用”。

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

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

解决办法是:

    对于初始显示,让您的 CI 控制器返回一个视图 - 就像您已经在做的那样。

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

    在视图中添加&lt;div id="xyz"...&gt; 标签,以便从服务器接收“刷新数据”。

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

    您的 Ajax 处理程序将 a) 从响应中解析出 JSON,然后 b) 使用它来更新 DOM 中的 &lt;div&gt;

这里有一些例子:

Using AJAX to reload only a Div

Let jQuery AJAX Change This Text

【讨论】:

美丽 - 很高兴听到它:)

以上是关于如何使用 CodeIgniter 中的 AJAX 函数更改网页的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何区分php(或codeigniter)中的ajax调用和浏览器请求?

如何使 Codeigniter 中的分页类与 AJAX 一起工作?

如何创建ajax请求以使用DataTable和Codeigniter并在同一文件中返回

使用jQuery AJAX请求CodeIgniter从Controller显示数据库中的数据到View而不刷新页面

codeigniter 中的 Ajax 表单验证

判断帖子是不是来自codeigniter中的ajax调用的方法?