Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2018, 19:28
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Почему При ajax подгрузке отрабатывает только первое условие if?
Есть фрагмент кода с ajax подгрузкой информации и вызова функции сразу после этого. Как сделать так, чтобы в случае самого первого запроса вызывалась страница приветствия, а после клика на кнопку загружалась функция с контентом. Храню значение булевой переменной в localStorage, но каждый раз почему-то загружается первый блок if и не могу перейти ко второй странице.
<style>#load {
 display: none;
 position: absolute;
 right: 10px;
 top: 10px;
 background: blue;
 width: 43px;
 height: 11px;
 text-indent: -9999em;
}</style>
<div class="panel-body" id="content"></div>

localStorage.setItem('myKey', 'true');
var localValue = localStorage.getItem('myKey');

$(function() {
  var pathToSome = 'some.php';

  $.get(pathToSome, function(data) {

    if (localValue) {
      $('#content').html("<h1>Стартовая страница</h1><p><a id='go' href="#
        ">Перейти</a></p>");

      localStorage.removeItem("myKey");

      localStorage.clear();
    } else {

      someFunction();
      console.log("Do some function");
    }

  });
  $('#go').click(function() {

    var toLoad = $(this).attr('href') + ' #content';

    $('#content').hide('fast', loadContent);

    $('#load').remove();

    $('#wrapper').append('<span id="load">LOADING...</span>');

    $('#load').fadeIn('normal');

    function loadContent() {
      $('#content').load(toLoad, '', showNewContent())
    }

    function showNewContent() {
      $('#content').show('normal', hideLoader());
    }

    function hideLoader() {
      $('#load').fadeOut('normal');
    }
    return false;

  });
});

Последний раз редактировалось giwuf, 17.09.2018 в 21:59.
Ответить с цитированием
  #2 (permalink)  
Старый 17.09.2018, 21:42
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,814

giwuf, http://jsbeautifier.org - отличный сервис для форматирования кода.

В вашем коде увидел только одно условие и нет ничего удивительного в том, что оно всегда выполняется.
В первых двух строчках вы записываете в локальное хранилище строку, тут же её читаете и сохраняете в переменной.
Иными словами значением переменной всегда будет непустая строка, поэтому условие постоянно и выполняется.
Ответить с цитированием
  #3 (permalink)  
Старый 17.09.2018, 22:00
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Сообщение от Nexus Посмотреть сообщение
giwuf, http://jsbeautifier.org - отличный сервис для форматирования кода.

В вашем коде увидел только одно условие и нет ничего удивительного в том, что оно всегда выполняется.
В первых двух строчках вы записываете в локальное хранилище строку, тут же её читаете и сохраняете в переменной.
Иными словами значением переменной всегда будет непустая строка, поэтому условие постоянно и выполняется.
Nexus,

спасибо за пояснение, привел код в более читаемый вид. А как сделать так, чтобы условие срабатывало только раз?
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2018, 06:06
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

if("myKey" in localStorage) {
	// Сюда вы попадёте только в том случае, 
	// если пользователь уже заходил на страницу.
	// Можете удалить ключ из локального хранилища
	// тогда в следующий раз будет, как будто зашли впервые
	localStorage.removeItem("myKey");
} else {
	localStorage.myKey = "ok";
	// Сюда попадаете, когда зашли впервые
}
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2018, 10:31
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Malleys,
спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полноценная история при Ajax. Krylovech AJAX и COMET 1 03.03.2012 03:11
установить переменную сессии через ajax при загрузке страницы optik77 AJAX и COMET 3 02.06.2011 17:36
getAllResponseHeaders() и status имеют смысл только при readyState==4? mister_maxim AJAX и COMET 7 27.03.2011 19:08
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24
Не отрабатывает событие onmouseout при внедрении нового слоя ilshat Элементы интерфейса 3 28.07.2008 06:27