【问题标题】:CodeIgniter cache preventing AJAX callsCodeIgniter 缓存阻止 AJAX 调用
【发布时间】:2023-04-07 10:55:01
【问题描述】:

我正在使用 codeigniter 构建我的网站。当用户滚动时,我在一页上进行了多个 ajax 调用。我的网站也使用 codeigniter 缓存。我似乎缓存阻止了ajax调用。

它是这样的:
我刷新了我的网站,并在用户滚动后进行了第一次 ajax 调用。之后应该有几个ajax调用,但它们不执行(不知道为什么)。然后我删除我的缓存,返回站点并滚动。同样只执行第一个 ajax 调用。

所以我最好的猜测是缓存以某种方式阻止了调用,但我不知道如何绕过这个问题。

我对 ajax 和 codeigniter 比较陌生。我用谷歌搜索了它,但没有任何有用的东西出现。我希望你们能帮助我:)

【问题讨论】:

  • 你有没有看到你的控制台看看如果有任何错误怎么办?
  • 或者你能放一些你的代码吗?
  • 正如@allamjaddou 所提到的,请发布您的ajax 相关代码并检查控制台是否有错误 - 如果您多次从同一位置请求数据,则请求可能被缓存,这可以通过在请求 url 上附加时间戳来解决

标签: php jquery ajax codeigniter caching


【解决方案1】:

假设您正在对以下内容进行 ajax 调用:

www.yoursite.com/some_class_to_cache/some_function/some_parameter

问题是路由器响应缓存页面

www.yoursite.com/some_class_to_cache/some_function/cached_pa​​rameter

所以您收到的响应是这个缓存页面,而不是 ajax 响应。 要更改此行为,一种解决方案是创建一个位于其他未缓存的位置的 ajax 调用处理程序。

www.yoursite.com/some_ajax_class/some_function/some_parameter

然后从那里创建 some_class_to_cache 对象并使用 some_parameter 调用 some_function。

【讨论】:

    【解决方案2】:

    jquery 有解决方案,但 codeigniter 返回 404 页面

    $.ajaxSetup({ cache: false });
    

    据我所知,问题是 jquery 使用了他们所谓的缓存破坏器 _?=xxx 获取值,如果我能找到一个让 url 使用的方法

    这应该更容易解决问题

    www.yoursite.com/some_class_to_cache/some_function/some_p
        arameter?_=1469969058680
    

    这是为我解决的问题

    把 config.php 改成这个

    $config['uri_protocol'] = "PATH_INFO";
    

    【讨论】:

      猜你喜欢
      • 2011-11-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      相关资源
      最近更新 更多