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 | }); |