View difference between Paste ID: 6fQvmAfP and vdBH70KS
SHOW: | | - or go back to the newest paste.
1
function update_value() {
2
	//Вот тут ты создаёшь глобальную переменную. Чтобы она была локальной, есть var или let, если тебе можно в ES6
3
	//Далее, когда ты вытаскиваешь значение из селекта, тебе не нужно фигачить такую кошмарную конструкцию. Достаточно
4
	// $('#parameter').val()
5
    parameter = $("option:selected", $('#parameter')).val();
6
	//Не знаю, идёшь ты с http или https, но если у тебя совпадает домен, можно было просто написать относительный URL:
7
	// $.get('/severity/value' + parameter)
8
    $.get('https://' + window.location.hostname + '/severity/value/' + parameter).done(function(data) {
9
		//Если ты хочешь в дальнейшем заменить всё содержимое, чистить его не обязательно - ниже уточню, почему
10
        $('#value').empty();
11
		//Если то, что ты запрашиваешь, отдаёт честный json, то это можно не делать - jQuery парсит сама
12
        params = JSON.parse(data);
13
		//Строго говоря, в таких циклах надо ещё проверять, что ты имеешь дело со свойством объекта, а не его прототипа:
14
		// if(Object.hasOwnProperty(params, key))
15
		// Я мог ошибиться в порядке переменнях, но название метода должно быть правильное. А вообще у большинства библиотек,
16
		// включая jQuery, есть методы для пробегания по таким объектам, которые это делают за тебя.
17
        for (var key in params){
18
			// Когда ты работаешь с DOMом, хороший тон - делать минимум мутаций. Потому что они медленные. Поэтому
19
			// правильнее бы было сначала собрать всё вместе (в строку или DocumentFragment), и только потом вставлять.
20
			// Я бы здесь сделал длинную строку, а потом вне цикла сказал $('#value').html(длинная строка)
21
          $('#value').append($('<option value="' + parameter + '/' + key + '">' + params[key] + '</option>'));
22
        };
23
		//Опять-таки, селект достаточно умный, чтобы понять $('#value').val(value того option'а, который должен быть выбран)
24
        $('#value :first').attr("selected", "selected");
25
    });
26
};
27
28
function update_parameter() {
29
    component = $("option:selected", $('#component')).val();
30
    $.get('https://' + window.location.hostname + '/severity/parameter/' + component).done(function(data) {
31
        $('#parameter').empty();
32
        params = JSON.parse(data);
33
        for (var key in params){
34
          $('#parameter').append($('<option value="' + component + '/' + key + '">' + params[key] + '</option>'));
35
        };
36
        $('#parameter :first').attr("selected", "selected");
37
        update_value();
38
    });
39
};
40
41
// Обычно используют краткую форму: $(function(){ ... })
42
$(document).ready(function() {
43
    $('#component').on('change', function (e) {
44
        update_parameter();
45
    });
46
    $('#parameter').on('change', function (e) {
47
        update_value();
48
    });
49
    update_parameter();
50
});