Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2015, 18:24
Интересующийся
Отправить личное сообщение для freelancer.rnd Посмотреть профиль Найти все сообщения от freelancer.rnd
 
Регистрация: 14.05.2014
Сообщений: 27

Проблема с видимостью перменной
Всем привет, проблема с кодом не могу разобраться почему

$(window).ready(function(){


var list_info_product;


	
		
	 $.getJSON('price.php',function (set){
		list_info_product = JSON.parse(set);
		
		
		
		for(var id in list_info_product){
		var name_section = list_info_product[id];
		
			$("#order-menu_block .content").append("<section  data--delay='0.3s' class='"+ id + "'><img src='img/img_"+ id + ".jpg' alt=''><div class='contener'><h3>"+list_info_product[id][1]['group']+":</h3><ul class='left'></ul><ul class='right'>");
					
					for(var menu in list_info_product[id]){
						if(menu<=4){
							if(id == 'garnire' && menu>3) var align_position = 'right';	
							else  var align_position = 'left'; 
						}
						else  var align_position = 'right';			
						
						
						$("#order-menu_block .content ."+id+" .contener ul."+ align_position).append("<li><div class='produckе' id_product='"+menu+"'><div class='name'>"+list_info_product[id][menu]['name']+"<br> "+list_info_product[id][menu]['gramm']+"</div><div class='cent'><span class='prize'>"+list_info_product[id][menu]['price']+"</span></div><div class='count'><div class='count_tablo'><a class='minus disb'>-</a> <span class='count_product'>0</span> <a class='plus'>+</a></div></div></div></li>");

						if(menu == 1) var checked = 'checked'
						$(".fotm_order div." + id).append("<input type='radio' "+checked+" name='"+id+"' id='"+id+"_"+menu+"' id_product='"+menu+"' name='"+id+"' value='"+list_info_product[id][menu]['name']+"'></input><label for='"+id+"_"+menu+"'>"+list_info_product[id][menu]['name']+"<br>"+list_info_product[id][menu]['gramm']+"</label>");
						checked = " ";
						
					}
			$("#order-menu_block .content").prepend('</section>');
		}
	
	});

	
	

		print_r(list_info_product);
	
	
	
		
	
	
	
	
	
	function print_r(array){
		$('body').append('<select multiple id="array_brows"></select>');
		
		for(var cicle in array){
			
			$('#array_brows').append('<option value="">'+cicle+'</option>')
			
		}
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

var AllCount_price_Obed ;


});



Не пойму почему не доступна переменная list_info_product за пределами функции . как сделать так что бы она была доступна?
Ответить с цитированием
  #2 (permalink)  
Старый 13.08.2015, 18:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Потому, что $.getJSON вообще-то асинхронный запрос, а list_info_product объявлена в нем как локальная переменная, но будь она и глобальная, так ее значение не получить.
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2015, 19:41
Интересующийся
Отправить личное сообщение для freelancer.rnd Посмотреть профиль Найти все сообщения от freelancer.rnd
 
Регистрация: 14.05.2014
Сообщений: 27

А как её получить?
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2015, 06:21
Интересующийся
Отправить личное сообщение для freelancer.rnd Посмотреть профиль Найти все сообщения от freelancer.rnd
 
Регистрация: 14.05.2014
Сообщений: 27

Ау. Скажите какимне получить этот json и использовать с помощью других функций как записать все в глобальный массив
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2015, 07:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Записывайте, это не является проблемой, проблема когда это будет доступно. То есть "код запроса", следом же "обращаемся к результату записанному запросом", так не прокатит, результат будет нулевой.

Можно обратиться к результату запроса спустя время, за которое гарантированно данные им полученные будут сохранены в переменную. А вот какое время, сказать трудно, запрос вообще может завершиться неудачей, может выполняться долго в зависимости от отклика сервера, или очень быстро.

Нужно, либо организовать событие, которое возникнет при завершении запроса, либо просто таймер на N-ю длительность, после которой предположительно данные гарантировано возвращены и получаем их.

Но самый верный вариант, если уж речь идет о сохранении чего-то глобального для последующего применения, это использование возвращенного значения элементами интерфейса возвращенного асинхронным запросом. То есть, к примеру - после загрузки страницы, делается асинхронный запрос, который подгружает в нее некую область элементы, и сохраняет некие данные данные для общего применения.

Элементы этой области являются источниками событий, инициаторами функций, которые будут использовать сохраненные данные. Другими словами асинхронный запрос обслуживает определенную часть задач для части интерфейса страницы, хотя можно организовать и доступ к данным и остальному на странице.

Последний раз редактировалось laimas, 14.08.2015 в 07:44.
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2015, 20:14
Интересующийся
Отправить личное сообщение для freelancer.rnd Посмотреть профиль Найти все сообщения от freelancer.rnd
 
Регистрация: 14.05.2014
Сообщений: 27

А в коде как мне это сделать ?я не очень знаю js
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2015, 21:10
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от freelancer.rnd
Всем привет, проблема с кодом не могу разобраться почему
Извините за оффтоп, но уберите огромное количество пустых строк в своём коде. И почитайте на досуге пожалуйста советы по стилю кода:
https://learn.javascript.ru/coding-style
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2015, 22:05
Интересующийся
Отправить личное сообщение для freelancer.rnd Посмотреть профиль Найти все сообщения от freelancer.rnd
 
Регистрация: 14.05.2014
Сообщений: 27

Помогите решить вопрос
Ответить с цитированием
  #9 (permalink)  
Старый 14.08.2015, 22:32
Интересующийся
Отправить личное сообщение для freelancer.rnd Посмотреть профиль Найти все сообщения от freelancer.rnd
 
Регистрация: 14.05.2014
Сообщений: 27

Мне нужно получить json от сервера записать в миссив использовать потом как это сделать ? покажите пример кода
Ответить с цитированием
  #10 (permalink)  
Старый 15.08.2015, 11:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Этот запрос представленный в коде, он подгружает некое меню или ...?
Словами поясните что за задача стоит.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с видимостью $(this) chiffenok Общие вопросы Javascript 2 12.08.2013 16:21
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47