Вызов функции при загрузке данных в поле из сервера

217
28 апреля 2018, 17:53

Есть такая структура select со странами загрузка данных стран с сервера

<select>
<option>Россия</option>
<option>Армения</option>
...
<select>

есть еще select куда нужно загрузить города и при получении данных в Россия нужно получить значение в и вызвать функцию для загрузки городов из этой страны в Москва

Вот при изменении поля со странами, когда они загружены получить данные получается, а вот когда они первый раз подгружаются нет, как это сделать, кто может подсказать?

Я пытался ждать полной загрузки ДОМ все равно не получается взять первое значение, может не успевает загружается поле данными, никак не могу найти решение.

скрипт в JSP на JavaScript

<script>
    $(document.getElementById("selectUserCountry")).ready(
        getCity()
    );

---------------код выше не помог получить данные((-------------

        function getCity() {
            var countryInput = $('select#selectUserCountry option:checked').val();
            console.log("Country value" + countryInput);
            var selectId = document.getElementById("selectUserCountry").options.selectedIndex;
            var txt= document.getElementById("selectUserCountry").options[selectId].text;
            var val= document.getElementById("selectUserCountry").options[selectId].value;
            console.log("SelectID text" + txt);
            console.log("SelectID value" + val);
            $.ajax({
                url: "./JsonGetCity",
                scriptCharset: 'UTF-8',
                method: 'POST',
                dataType: 'json',
                mimeType: 'application/json',
                contentType: 'application/json',
                data: {"country":countryInput},
                error: function(message) {
                    console.log(message);
                },
                success: function (res) {
                    console.log("Data from index in JSON --  " + countryInput);
                    var input = document.getElementById("selectUserCity");
                    input.innerHTML = res.value;
                }
            });
            return false;
        }
</script>

И в JSP ------------------Замечу что использую событие onchange и все работает при смене страны я получаю ее значение через request.getAttribute("country"); в сервлет. А вот когда ничего не менял и все первый раз подгрузилось в сервлете получаю null.-------------------

<label for="selectUserCountry">Country</label><br>
<select id="selectUserCountry" name="countrySelect" onchange="return getCity();"></select><br>
<label for="selectUserCity">City</label><br>
<select id="selectUserCity" name="citySelect"></select><br>
Answer 1

При загрузке страницы вы можете брать значение selecta и передавать его в другой объект для использования с помощью JS (в данном случае с подключенной библиотекой jQuery) либо инициализировать виджет использовав дынные как переменную для него.

$(document).ready(function() { 
  alert($('#temp_form select[name="country"]').val()); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="temp_form"> 
  <select name="country"> 
    <option value="1" selected="">Россия</option> 
    <option value="2">Армения</option> 
  </select> 
</form>

READ ALSO
Нужно ли запускать npm install, если все пакеты установлены заранее?

Нужно ли запускать npm install, если все пакеты установлены заранее?

Нужно апдейтнуть проект на компах с запретом выхода в сетьВсе npm пакеты уже установлены, будет производиться только замена исполняющего...

195
GET запрос и ошибка CORS

GET запрос и ошибка CORS

Сделал GET запрос с помощью JS https://pastebincom/kcCdiRxe ,добавил CORS в заголовки,но все равно выводить ошибки в консоле

211
Кроссдоменный AJAX

Кроссдоменный AJAX

Чем плохо то, что сервер разрешит всем производить кроссдоменный ajax? Будем обрабатывать эти запросы так же, как и от обычных клиентов и все...

343