Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   вывод после load (https://javascript.ru/forum/offtopic/68059-vyvod-posle-load.html)

alexvb 23.03.2017 15:26

вывод после load
 
Доброго дня! Форумчане, подскажите пожалуйста, почему alert срабатывает раньше, чем идет подгрузка option в select через load?
<select id="ttt"></select>

$('#ttt').load('ajax', {mat : mat}, function(){
            alert("Privet!");
        });

ajax
<? foreach ($view['value'] as $key => $val){ ?> 
<option value="<?=$val['value']?>">
    <?=$val['value']?>
</option>
<? } ?>

Сначала выскакивает alert, а после подгружаются данные в select. А нужно, чтобы данные подгружались, а после с ними можно было работать. Спасибо.

рони 23.03.2017 15:31

alexvb,
хром?

alexvb 23.03.2017 15:43

да в любом, и в хроме в том числе...

рони 23.03.2017 15:47

alexvb,
может алерт заменить на console.log()?

alexvb 23.03.2017 16:13

А что это даст? В консоле выводит, но видимо тоже раньше, чем подгружаются <option>ы...

ksa 23.03.2017 16:49

Цитата:

Сообщение от alexvb
Сначала выскакивает alert, а после подгружаются данные в select. А нужно, чтобы данные подгружались, а после с ними можно было работать.

Бивас, тест!

Файл tmp.csp
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('#test').load('tmp1.csp',function(){
		alert(this.options.length);
	});
});
</script>
</head>
<body>
<select id='test'></select>
</body>
</html>

Файл tmp1.csp
<option></option>
<option>1</option>
<option>2</option>

У меня все работает!
Алерт показывает 3 штуки. Т.ч. с ними можно работать, как и обещано в документации...

alexvb 23.03.2017 16:58

И у Вас сначала алерт выскакивает, а потом уже можно с данными option работать.... Смысл в том, чтобы в подгружаемом списке один из элементов сделать выбранным (selected). Алерт поставил для теста, что и выявило проблему его первичного выскакивания...

рони 23.03.2017 17:32

alexvb,
вы поставьте вместо алерта this.options.selectedIndex = 1 ; или сколько вам нужно.

alexvb 23.03.2017 18:07

рони,
selectedIndex это по порядковому номеру. А по значению можно также сделать?

рони 23.03.2017 18:52

alexvb,
this.value = "tra-ta-ta"


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