Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Дождаться выполнение запроса. (https://javascript.ru/forum/jquery/11753-dozhdatsya-vypolnenie-zaprosa.html)

psyhonut 11.09.2010 19:53

Дождаться выполнение запроса.
 
function chn(objct) {
            var di_nas_punkt_id = $(objct).val();
            if (di_nas_punkt_id == '0') {
                $('#di_areas_id').html('');
                $('#di_areas_id').attr('disabled', true);
                return(false);
            }
            $('#di_areas_id').attr('disabled', true);
            $('#di_areas_id').html('<option>загрузка...</option>');
            var url = '<?php echo $_SERVER['REQUEST_URI'],'&from=areas'; ?>';
            
            $.get(
                url,
                "nas_punkt_id=" + di_nas_punkt_id,
                function (result) {
                    var options = '<option value="0"><?=_l_okrug_create_ar_select;?></option>';
                    $(result.areas).each(function() {
                        options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>';
                    });
                    $('#di_areas_id').html(options);
                    $('#di_areas_id').attr('disabled', false);
                },
                "json"
            );
        };

Данный скрипт делает мне набор опций, которые по аджаксу получаются из файла.
После выполнения этого кода мне надо сделать выбранным определенный пункт меню.
Делается так:
загружаю список
chn($('#di_nas_punkt_id'));

И выбираю элемент
$('#di_areas_id').val(<?=$sel_area;?>);

Элемент не выбирается, так как на момент выполнения кода
$('#di_areas_id').val(<?=$sel_area;?>);
список почему-то еще пустой.

Как мне дождаться выполнения кода и заполнения списка, и только потом продолжать работу JS?

inGray 11.09.2010 20:06

Можно делать синзронный AJAX запрос или проверять заполнен ли список.

psyhonut 12.09.2010 02:57

Что за синхронный запрос?
Если делать проверкой заполнен ли список, то ее в цикле делать, как думаете?

inGray 12.09.2010 03:12

Не в цикле, а при помощи setTimeout или setInterval

psyhonut 12.09.2010 10:15

Потом так и подумал. Поищу.
Не силен в js аж вообще.

micscr 12.09.2010 11:00

$('#di_areas_id').html(options);
   $('#di_areas_id').attr('disabled', false);
   // тут надо делать
   $('#di_areas_id').val(<?=$sel_area;?>);


про синхронный запрос не слушай - херня это.

psyhonut 12.09.2010 12:25

Отлично. Все работает. С меня пиво :-)


Часовой пояс GMT +3, время: 01:57.