Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2019, 12:18
Аспирант
Отправить личное сообщение для nathan111777 Посмотреть профиль Найти все сообщения от nathan111777
 
Регистрация: 12.05.2019
Сообщений: 44

Вывод cодержимого одного json файла на две html страницы?
Как вывести из одного json файла cодержимое одного обьекта на одну html cтраницу а содержимое другого обьекта на другую html страницу?

Есть один мужской товар (рубашка) и один женский товар (платье) в файле goods.json.
Нужно чтобы при открытии страницы man.html отобразилась мужская рубашка а при открытии страницы woman.html отобразилось платье. Как реализовать это? (без использования jquery) Что добавить в мой код?


eshop.js:
document.addEventListener('DOMContentLoaded', function (e) {               
  loadGoods();  
});
function loadGoods() {
    
    $.getJSON('goods.json', function (data) {
        
        var out = '';
        for (var key in data){
            out+='<div class="single-goods">';
            out+='<h3>'+data[key]['name']+'</h3>';
            out+='<img src="'+data[key].image+'">';
            out+='<p>Цена: '+data[key]['cost']+'</p>';
            out+='<button class="add-to-cart" data-art="'+key+'">Купить</button>';
            out+='</div>';
        }
         document.getElementById('goods').innerHTML = out; 
         document.querySelectorAll('button.add-to-cart').forEach(function(but) {
           but.addEventListener("click",addToCart);
})
    });
}



goods.json:
{
  "Рубашка №1" : {
    "name" : "Рубашка №1",
    "cost" : 1000,
    "country" : "argentina",
    "image" : "images/1.jpg",
    "brand": "M"
  },
 "Платье №1" : {
    "name" : "Платье №1",
    "cost" : 1000,
    "country" : "brazil",
    "image" : "images/a.jpg",
     "brand": "L"
  }
}



man.html:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
</head>
<body>
        <a href="index.html">на главную cтраницу</a>
         <div id="mini-cart"></div>
         <div id="goods"></div>
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/eshop.js"></script>
</body>
</html>


woman.html:

//такой же код как и в man.html

Последний раз редактировалось nathan111777, 19.08.2019 в 12:33.
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2019, 12:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

nathan111777, ситуация конечно бестолковая... Такого быть не должно.

Но если как упражнение какое-то... Тогда, как вариант, можно прочитать название страницы и послать в функцию аргумент равный одному из
- Рубашка №1
- Платье №1
Далее, без всякого цикла, просто использовать указанный ключ...
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2019, 12:42
Аспирант
Отправить личное сообщение для nathan111777 Посмотреть профиль Найти все сообщения от nathan111777
 
Регистрация: 12.05.2019
Сообщений: 44

Как реализовать это кодом? Я просто только начинаю изучать JS...Приведите пожалуйста хоть маленький пример кода как это реализовать...
А про ситуацию, просто мне нужно чтобы все товары хранились в одном json файле а не в разных json файлах...
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2019, 12:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от nathan111777
мне нужно чтобы все товары хранились в одном json файле
Тогда как ты будешь понимать какую информацию тебе извлекать?
Зачем грузить всю информацию, когда нужна только часть?
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2019, 12:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от nathan111777
Как реализовать это кодом?
Я вот про такое писал выше...
document.addEventListener('DOMContentLoaded', function (e) {               
	var o={
		'man.html': 'Рубашка №1',
		'woman.html': 'Платье №1'
	};
	var key=top.location.href;
	key=key.match(/[^\/]+$/);
	key=o[key];
	loadGoods(key);  
});
function loadGoods(Key) {
	$.getJSON('goods.json', function (data) {
		var out = '';
		out+='<div class="single-goods">';
		out+='<h3>'+data[Key]['name']+'</h3>';
		out+='<img src="'+data[Key].image+'">';
		out+='<p>Цена: '+data[Key]['cost']+'</p>';
		out+='<button class="add-to-cart" data-art="'+Key+'">Купить</button>';
		out+='</div>';
		document.getElementById('goods').innerHTML = out; 
		document.querySelectorAll('button.add-to-cart').forEach(function(but) {
			but.addEventListener("click",addToCart);
		})
	});
}

Но если данных будет много - это не выход из ситуации...

Последний раз редактировалось ksa, 19.08.2019 в 13:24.
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2019, 13:13
Аспирант
Отправить личное сообщение для nathan111777 Посмотреть профиль Найти все сообщения от nathan111777
 
Регистрация: 12.05.2019
Сообщений: 44

ну пока делаю сайт для портфолио, то думаю закинуть 8 мужских рубашек и 8 женских платьев.
Просто на моем сайте есть корзина товаров cart.html в которую добавляюю товары, пробовал создать отдельный файл json для женских товарова и копию eshop.js то начались проблемы с localstorage...когда-то давно посоветовали взять и все обьекты поместить в один json файл что б не было ошибок с localstorage
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2019, 13:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

nathan111777, желательно получать только нужные на странице данные...
А ты собираешься грузить как женское, так и мужское. У тебя серверной "части" нет совсем?
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2019, 14:18
Аспирант
Отправить личное сообщение для nathan111777 Посмотреть профиль Найти все сообщения от nathan111777
 
Регистрация: 12.05.2019
Сообщений: 44

я учусь на front-end developer, а потому серверной части нет, знаю что это делается на серверной части но все равно хочу доделать это потому что сайт уже на 90% готов, а это мини интернет магазин.
а что делает эта строка?
key=key.match(/[^\/]+$/);

почему так много символов в круглых скобках? для чего они?
Ответить с цитированием
  #9 (permalink)  
Старый 19.08.2019, 14:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от nathan111777
а что делает эта строка?
key=key.match(/[^\/]+$/);
Возвращает имя страницы из УРЛа...
https://javascript.ru/string/match

Сообщение от nathan111777
почему так много символов в круглых скобках?
Ты можешь написать другой паттерн.

Последний раз редактировалось ksa, 19.08.2019 в 14:40.
Ответить с цитированием
  #10 (permalink)  
Старый 19.08.2019, 14:50
Аспирант
Отправить личное сообщение для nathan111777 Посмотреть профиль Найти все сообщения от nathan111777
 
Регистрация: 12.05.2019
Сообщений: 44

я вот подумал а если например добавлю в json 8 мужских товаров и 8 женских,а что если
1) пронумеровать объекты(назвать их числом) в файле json мужские от 1 до 8 а женские от 8 до 16.
2) в обьекте "o" свойству man.html присвоить значение от 1 до 8.
а свойству woman.html присвоить значение от 8 до 16.
Так можно или свойство может принимать только одно значение?
Если можно то как это сделать?

Последний раз редактировалось nathan111777, 19.08.2019 в 14:52.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью javascript взять данные из одного файла html и закинуть в другой? rusik Общие вопросы Javascript 10 08.08.2016 12:11
В Chrome жму "Назад", в место страницы выводит выводит json frost18 AJAX и COMET 6 12.08.2014 11:10
вывести html код страницы в div djonA Общие вопросы Javascript 3 13.05.2013 20:01
Очень нужно.. Отправка HTML куски в JSON от сервера используя Ajax bivnikus jQuery 8 26.10.2010 23:54
Поиск слова в исходном коде html страницы klsorat2010 Ваши сайты и скрипты 1 20.05.2010 23:46