Задать вопрос
@happyofheaven

Почему не перезаписывается значение глобальной переменной (JS)?

Есть следующий код.
В функции two должна происходить перезапись глобальной переменной "global_var", но она происходит как запись локальной переменной.
Соответственно получается, что
при загрузке страницы, global_var = "результат не известен"
внутри функции two, global_var = data
после выхода из функции two, значение global_var = "результат не известен"
А нужно, чтобы после выхода из функции two, значение global_var = data.
Никак не могу понять в чём ошибка.

var global_var = "результат не известен";
$("#example-2").attr('placeholder', global_var);
    

function two(data){
  console.log('two is ' + data); 
  global_var = data; // с этого момента глобальная переменная перезапишится и всё, что будет вызываться после этого, будет видеть её новое значение
  console.log('globalvar is ' + global_var);
  $("#example-2").attr('placeholder', global_var);
}


$(document).ready(function() {
  $('#submit-btn').click(function() { 
      var home_region = $('#home_region').val();
      var current_region = $('#current_region').val();
      var result = (home_region + current_region);
      $.ajax({
                url: '/get_ajax.php', 
                method: 'POST',
                dataType: 'json',
                data: {data: result},
                success: two 
    });
  });
});
  • Вопрос задан
  • 1244 просмотра
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Сворачиваем дискуссию, просто при клике страница перегружается, ибо субмит срабатывает. Учимся основам.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@RuslanTimuziyev
Немного кодер
Вы можете вызвать функцию до $(document).ready. Более того вы еще функцию two написали без скобочек.
Ответ написан
@s-jet
success: function(data) {
        two(data.ключ);
    }


Только учитывайте, что вы в функцию передадите весь JSON и его нужно будет разобрать, чтобы вынуть нужное
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы