【问题标题】:Load data with AJAX only if it has not already been loaded?仅当尚未加载数据时才使用 AJAX 加载数据?
【发布时间】:2015-10-17 00:21:36
【问题描述】:

我需要加载数据以供我的 JavaScript 应用使用。我想加载以下内容:

  • 用户列表 JSON
  • 里程碑 JSON
  • 标签 JSON
  • 用户 ACL 权限 JSON

这 4 项来自服务器的 JSON 数据应使用 AJAX 加载,但只加载一次。

所以我需要代码来检查数据是否已加载,如果已加载,请使用它。如果还没有加载,它会发出 AJAX 请求并加载数据,然后使用它。

我有多个需要访问这些数据的 JavaScript 文件,所以我想确保它们中的任何一个都可以访问它,并且无论哪个首先调用它,都会使用 AJAX 加载它并使其可供其他脚本调用无需多次重复 AJAX 请求。

如何使用 JavaScript 和 jQuery 来解决这个问题?

一个基本的例子会非常受欢迎和有用。谢谢


如果其中任何一个未设置,请使用 AJAX 加载它们。使用 AJAX 加载后,设置这些变量以供下一个调用者访问它们,而无需发出新的 AJAX 请求...

var userList = userJsonData;

var milestoneList = milestoneJsonData;

var tagList = tagJsonData;

var useAclPermissions = useAclPermissionsJsonData;

【问题讨论】:

    标签: javascript jquery json ajax


    【解决方案1】:

    当您的页面加载时,只需将数据存储在一个全局 javascript 变量中,该变量设置为 null。第一个加载数据的脚本,将其存储在变量中,所有其他脚本尝试访问变量的内容,如果未设置,则加载它:

    var milestoneData = null;
    
    function getMilestoneData() {
      if (milestoneData === null) {
         //make the ajax request, and populate milestoneData variable
      } else return milestoneData;
    }
    

    【讨论】:

      【解决方案2】:

      根据can i use,您可以查看localstorage aka webstorage。如果您可以使用它,它可能会解决您的问题。有一个jQuery plugin 可用。 jstorage 是另一种选择,页面底部有一个非常简单的示例。希望这可以帮助。

      【讨论】:

        猜你喜欢
        • 2021-11-07
        • 2020-06-13
        • 2013-02-04
        • 1970-01-01
        • 2012-03-21
        • 2014-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多