Dave Riley
Dave Riley

Reputation: 191

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

I need to load data for my JavaScript app to use. I would like to load the following:

These 4 items of data from the server as JSON should be loaded using AJAX but only loaded once.

So I need code that will check to see if the data is loaded already and if it is, use it. If it is not loaded yet, it would make an AJAX request and load the data, and then use it.

I have multiple JavaScript files which need access to this data so I want to make sure that any of them can access it, and whichever once calls for it first will load it using AJAX and make it available for the other scripts to call it without making multiple repeat AJAX requests.

How could I go about this using JavaScript and jQuery?

A basic example would be super appreciated and useful. Thank you


If any of these are not set, load them using AJAX. After loading with AJAX, set these vars for the next caller to access them without a new AJAX request being made...

var userList = userJsonData;

var milestoneList = milestoneJsonData;

var tagList = tagJsonData;

var useAclPermissions = useAclPermissionsJsonData;

Upvotes: 3

Views: 787

Answers (2)

Remco
Remco

Reputation: 435

According to can i use you can check out localstorage aka webstorage. If you can use it, it might solve your issues. There is a jQuery plugin available. jstorage is an alternative, and has a really simple example at the bottom of the page. Hope this helps.

Upvotes: 0

Adam Baranyai
Adam Baranyai

Reputation: 3867

Just store the data in a global javascript variable, which is set to null, when your page loads. The first script which loads the data, stores it in the variable, all the other scripts try to access the content of the variable, and if not set, load it:

var milestoneData = null;

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

Upvotes: 1

Related Questions