Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2018, 15:46
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Не используется переменная
Не могу понять как использовать переменные
html, files_path после отработки функции
$('.upload_files').on( 'click', function( event ){
...}
пробую например вывести в консоль console.log($html) внутри
этой функции $(".add2cart").click(function () {...}

выдается ошибка "Uncaught ReferenceError: $html is not defined"

Ниже весь код:
$(window).ready(function () {
	(function($){

var files; // переменная. будет содержать данные файлов

// заполняем переменную данными файлов, при изменении значения file поля
$('input[type=file]').on('change', function(){
	files = this.files;
});


// обработка и отправка AJAX запроса при клике на кнопку upload_files
$('.upload_files').on( 'click', function( event ){

	event.stopPropagation(); // остановка всех текущих JS событий
	event.preventDefault();  // остановка дефолтного события для текущего элемента - клик для <a> тега

	// ничего не делаем если files пустой
	if( typeof files == 'undefined' ) return;

	// создадим данные файлов в подходящем для отправки формате
	var data = new FormData();
	$.each( files, function( key, value ){
		data.append( key, value );
	});

	// добавим переменную идентификатор запроса
	data.append( 'my_file_upload', 1 );

	// AJAX запрос
	$.ajax({
		url         : '/wp-content/themes/basic-pro/submit.php',
		type        : 'POST',
		data        : data,
		cache       : false,
		dataType    : 'json',
		// отключаем обработку передаваемых данных, пусть передаются как есть
		processData : false,
		// отключаем установку заголовка типа запроса. Так jQuery скажет серверу что это строковой запрос
		contentType : false,
		// функция успешного ответа сервера
		success     : function( respond, status, jqXHR ){

			// ОК
			if( typeof respond.error === 'undefined' ){
				// файлы загружены, делаем что-нибудь

				// покажем пути к загруженным файлам в блок '.ajax-reply'
				
				var files_path = respond.files;
				var $html = '';
				$.each( files_path, function( key, val ){
					 $html += val +'<br>';
				} )

				$('.ajax-reply').html( $html );
			}
			// error
			else {
				console.log('ОШИБКА: ' + respond.error );
			}
		},
		// функция ошибки ответа сервера
		error: function( jqXHR, status, errorThrown ){
			console.log( 'ОШИБКА AJAX запроса: ' + status, jqXHR );
		}
	});
	$(".add2cart").click(function () {
		description = "";
		if ($("[data-id=" + $(this).data("id") + "]").hasClass("descriptionField")) {
			$(".descriptionField[data-id=" + $(this).data("id") + "]").removeClass("error");
			if ($(".descriptionField[data-id=" + $(this).data("id") + "]").val() < 8) {
				$(".descriptionField[data-id=" + $(this).data("id") + "]").addClass("error");
				return false;
			} else {
				description = $(".descriptionField[data-id=" + $(this).data("id") + "]").val();
				// description = description + " www ";
				console.log($html);
			}
		}
		$('#basket').removeClass('close-basket');
		$('button.add2cart[data-id=' + $(this).data("id") + ']').fadeOut();
		$('p.descriptionField-p[data-id=' + $(this).data("id") + ']').fadeOut();
		$('.descriptionField[data-id=' + $(this).data("id") + ']').fadeOut();
		$('.selectPrice[data-id=' + $(this).data("id") + ']').fadeOut();
		$('button.showFields[data-id=' + $(this).data("id") + ']').fadeIn();
		$('button.showFields[data-id=' + $(this).data("id") + ']').addClass('added');
		$('button.showFields[data-id=' + $(this).data("id") + ']').after('<i></i>');
		$.ajax({
			method: "post",
			url: "/ajax/common.php",
			data: ({
				action: "add2cart",
				name: $(this).data("name"),
				price: ($(".selectPrice[data-id=" + $(this).data("id") + "]").val() > 0 ? $(".selectPrice[data-id=" + $(this).data("id") + "]").val() : $(this).data("price")),
				descr: description
			}),
			success: function () {
				showcart();
				messageShowAddBasket("<p>Услуга добавлена<br><button onclick='showbasketlist(true);'>перейти в корзину</button></p>");
			}
		})
	});

});

	
})(jQuery);

});
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2018, 16:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от naplekov
пробую например вывести в консоль console.log($html) внутри
Это асинхронные события, это раз. Если певрое и было до наступления второго, то переменные должны быть глобальными, чтобы изменения в первом событии были доступны во втором, это два.
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2018, 16:15
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

naplekov,
Вообще-то $html у вас сохраняется в
$('.ajax-reply').html( $html );

- там и смотрите.
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2018, 16:28
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Сообщение от laimas Посмотреть сообщение
Это асинхронные события, это раз. Если певрое и было до наступления второго, то переменные должны быть глобальными, чтобы изменения в первом событии были доступны во втором, это два.
Спасибо! Помогло! Я уже не один день ковырялся
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2018, 16:29
Новичок на форуме
Отправить личное сообщение для naplekov Посмотреть профиль Найти все сообщения от naplekov
 
Регистрация: 20.03.2018
Сообщений: 9

Сообщение от Dilettante_Pro Посмотреть сообщение
naplekov,
Вообще-то $html у вас сохраняется в
$('.ajax-reply').html( $html );

- там и смотрите.
Пробовал. ничего не находит((
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2018, 16:47
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

naplekov,
Сообщение от naplekov
Пробовал. ничего не находит((
Не может быть!
$html у вас получает значение в ответе от сервера и сразу же записывается в $('.ajax-reply').
Больше у вас содержимое $('.ajax-reply') нигде не меняется. Если есть одно - должно быть и другое.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое обновление div в зависимости от переменной. Переменная Smarty в JS N1rvana Элементы интерфейса 5 08.06.2017 18:02
Простейший калькулятор на JS. Нужна помощь. Siverena Общие вопросы Javascript 2 06.04.2017 13:42
Переменная и select Navilsor Элементы интерфейса 17 23.01.2015 09:28
Имя массива, как строковая переменная, при обращении bugiman Элементы интерфейса 4 18.11.2013 15:44
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45