У меня есть 1 страница, загружающая Js файл с другого сервера. Его файл загрузки для каждого продукта в магазине электронной коммерции с его идентификатором в URL-адресе см. Ниже.
Продукт 1: http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs
Продукт 2:
http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs
Продукт 3:
http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/3/d/itemjs
Все файлы Js содержат код, как показано ниже.
var MyItemData={"counts":{"q":1,"a":1,"r":2,"ar":4,"rr":0,"dq":1,"da":1,"c":0,"sdsd":0},"active":true};
Теперь я читаю эти данные в Html, как показано ниже
var mycounta = MyItemData.counts.a;
var mycountq = MyItemData.counts.q;
var mycountr = MyItemData.counts.r;
Проблема здесь в том, что я могу получать данные только для последнего продукта, поскольку переменная MyItemData
одинакова для всех файлов. Я должен читать каждый файл по id, но я не знаю, как правильно его достичь. кто-нибудь пробовал что-то подобное?
Вы можете закодировать ответ, который загружает внешний файл js динамически.
Как загрузить файл javascript динамически?
На каждой итерации прочитайте MyItemData
и используйте ее.
Используя функцию loadJS
по ссылке выше;
<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>
Если вы загружаете эти файлы с помощью тега script
. Вы можете создать массив для хранения элементов и смешать теги скриптов со встроенными скриптами, которые сохраняют текущее значение MyItemData
внутри массива.
<script>
var items = [],
addItem = function() {
items.push(MyItemData)
};
</script>
Затем вызовите addItem
после каждого скрипта или сыграйте с событием onload
(не уверен, что позже будет работать).
<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>
и т.п.
items
для доступа к вашим данным?
MyItemData
берет данные только из последнего файла. У меня есть цикл загрузки файлов для каждого продукта.