繁体   English   中英

只有在尚未加载的情况下才使用AJAX加载数据?

[英]Load data with AJAX only if it has not already been loaded?

我需要为我的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;

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

var milestoneData = null;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM