я столкнулся со странной проблемой, я не знаю, с чего начать отладку
У меня есть форма на странице php с двумя полями выбора. Первый виден постоянно, второй отображается и заполняется после изменения первого.
$(document).ready(function() {
$("#year").on("change",function(){
//Getting Value
var selValue = $("#year :selected").val();
$.ajax({
url:'/allsites-monthly/'+selValue,
type: "GET",
dataType: "json",
beforeSend: function(){
$('#loader').css("visibility", "visible");
},
success:function(data) {
$('#month').css("display", "inline");
$('select[name = "month"]').empty().append('<option value = "0"> Chose month</option>');
$.each(data, function(key, value){
$('select[name = "month"]').append('<option value = "'+ value + '">'+ value +'</option>');
});
$('#submit').css("display", "inline");
},
complete: function() {
$('#loader').css("visibility", "hidden");
}
});
});
});
Код работает, но после отправки формы и обновления страницы ничего не происходит, когда я пытаюсь изменить первое поле выбора. Мне нужно вручную обновить страницу, чтобы сработало событие при изменении. В консоли ничего не отображается. После отправки формы я хотел бы иметь возможность выбрать другой год без необходимости вручную обновлять страницу. Есть идеи, где я ошибся? Спасибо за уделенное время!
Вот образец HTML
<form id = "period" class = "form-inline" method = "get" action = "/allsites-monthly/">
<div class = "form-group" id = "year">
<select name = "year" class = "form-control">
<option value = "0">Chose year</option>
<option value = "2018">2018</option>
<option value = "2019">2019</option>
</select>
</div><!-- /.form-group -->
<div class = "form-group" id = "month">
<select name = "month" class = "form-control">
<option value = "0">Chose month</option>
</select>
</div><!-- /.form-group -->
<button id = "submit" type = "submit" class = "btn btn-primary btn-sm">Submit</button>
</form>
Код работает в первый раз, проблема в том, что когда я не хочу снова менять год, мне приходится вручную обновлять страницу
Крайне важно, чтобы вы также показали нам HTML-код. Судя по тому, как вы получаете значение для выбора года, #year не является элементом <select>. Похоже, это родительский контейнер ... это означает, что ваше событие onchange не будет запущено. Вы не можете измениться в этом контексте
Прочтите stackoverflow.com/a/42805055/1866538 для получения дополнительной информации о том, как отслеживать изменение содержимого dom
@ Ass3mbler форма отправляется кнопкой отправки.
@Amjo, теперь вы можете увидеть образец html
@BRobert после отправки вы заново создаете ту же страницу?
@ Ass3mbler после отправки моя страница загружается с некоторым контентом, но в форме будет отображаться только 1 поле выбора
Тогда должна быть какая-то другая проблема на странице, мешающая JS. Трудно судить, не имея страницы и кода все, как предложил @Amjo
@ Ass3mbler, чем вы, очень для вашего типа, вы дали мне идею, которая решила проблему. При перезагрузке некоторые js не загружались
@BRobert добро пожаловать, рад, что вы решили проблему, хорошего дня !!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как отправить форму с помощью вызова ajax?