2017-06-01 4 views
1

J'ai une page qui charge le fichier Js d'un autre serveur. Son fichier de chargement pour chaque produit dans le magasin e-commerce avec son id dans url voir la structure ci-dessous.Javascript: Comment obtenir la valeur de variable à partir de fichier spécifique à partir de 2 fichiers différents?

Produit 1: http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs

Produit 2:

http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs

Produit 3:

http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/3/d/itemjs

Tous les fichiers Js contiennent du code ci-dessous comme

var MyItemData={"counts":{"q":1,"a":1,"r":2,"ar":4,"rr":0,"dq":1,"da":1,"c":0,"sdsd":0},"active":true}; 

Maintenant, je suis en train de lire ces données dans Html comme ci-dessous

var mycounta = MyItemData.counts.a; 
    var mycountq = MyItemData.counts.q; 
    var mycountr = MyItemData.counts.r; 

Le problème ici est que je ne peux obtenir des données pour le dernier produit en tant que variables MyItemData est le même pour tous les fichiers. Je dois lire chaque fichier par ID mais je ne sais pas comment le faire. Est-ce que quelqu'un a essayé quelque chose comme ça?

Répondre

1

Vous pouvez boucler la réponse ci-dessous qui charge js externes dynamiquement.

How do I load a javascript file dynamically?

A chaque itération, lisez MyItemData et l'utiliser. En utilisant la fonction loadJS sur le lien ci-dessus;

<script type="application/javascript"> 
var listOfJSFiles=["http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs", "http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs", "http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/3/d/itemjs"]; 
var listOfMyItemData=[]; 

function loadJS(file) { 
    // DOM: Create the script element 
    var jsElm = document.createElement("script"); 
    // set the type attribute 
    jsElm.type = "application/javascript"; 
    // make the script element load file 
    jsElm.src = file; 
    // finally insert the element to the body element in order to load the script 
    document.body.appendChild(jsElm); 
} 

var arrayLength = listOfJSFiles.length; 
for (var i = 0; i < arrayLength; i++) { 
    loadJS(listOfJSFiles[i]); 
    listOfMyItemData.push(MyItemData); 
    //removing listOfJSFiles[i] from html is recommended. 
} 

</script> 
+0

le fichier est déjà en train de charger sur la page. mais 'MyItemData' ne prend que les données du dernier fichier. J'ai bouclé pour charger des fichiers par produit. – Kul

+0

réponse modifiée. –

+0

Génial. Ça marche! – Kul

1

À condition que vous chargiez ces fichiers à l'aide de la balise script. Vous pouvez créer un tableau pour contenir des éléments et mélanger des balises de script avec des scripts en ligne qui sauvegardent la valeur actuelle de MyItemData dans le tableau.

<script> 
    var items = [], 
     addItem = function() { 
      items.push(MyItemData) 
     }; 
</script> 

Ensuite, appelez addItem après chaque script ou jouer avec l'événement onload (pas sûr si la suite fonctionnerait).

<script 
src="http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs" 
> 
</script> 

<script>addItem()</script> 

<script 
src="http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs" 
> 
</script> 

<script>addItem()</script> 

etc.

+0

Pas de chance qu'il donne les données des derniers fichiers seulement – Kul

+0

@Kul utilisez-vous des items pour accéder à vos données? –