Показать сообщение отдельно
  #1 (permalink)  
Старый 22.07.2019, 15:01
Интересующийся
Отправить личное сообщение для graf_vorontsov Посмотреть профиль Найти все сообщения от graf_vorontsov
 
Регистрация: 13.06.2017
Сообщений: 14

Вынес JS код в отдельный файл. Тормозит.
Есть небольшой скрипт на сайте.
так вот я давно его писал и поэтому оно написано как попало. теперь решил привести код в порядок... Но как говорится - не ремонтируй пока работает)))
рассмотрим 3 файла(упрощённая схема)

index.php
<!DOCTYPE html>
<html>
<head>
	<!-- Подключаем JavaScript-файл с нашим сценарием, который и будет получать данные об автомобилях -->
	<script src="js/custom.js"></script>
	<!-- Подключение скрипта PCL's Nice Tooltip -->
	<script type="text/javascript" src="js/pcl_tooltip.js"></script>
</head>
<!-- при загрузке боди, подключается скрипт. может влияет. решил указать-->
<body onload="PCL_TooltipInit();">	
	<div id="form">	
		<form id="searchFormx">
			<div id="marki">
				<select id="select_marka">
					<option value="">Выберите марку</option>
					<?php foreach($marki as $marka): ?>
							<option value="<?php echo $marka['marka_id'];?>"><?php echo $marka['marka_name'];?></option>
					<?php endforeach; ?>
				</select>
			</div>
			<div id="modele">	</div>
			<div id="cars"></div>
		</form>	
		<div id="info"></div>
		<div style=" width:100%; height:1px; clear:both;"></div>
	</div>
	<div id="msg"></div>
	<div id="search-result"></div>
</body>
</html>

search.php
<?php if(isset($_POST['marka_id']) && $_POST['marka_id'] != ""): ?>
	<?php 
		$marka_id = $_POST['marka_id'];
		$modele = getModel($marka_id);
	?>
	<select id="select_model">
			<option value="">Выберите модель</option>
			<?php foreach($modele as $model): ?>
					<option value="<?php echo $model['model_id'];?>"><?php echo $model['model_name'];?></option>
			<?php endforeach; ?>
	</select>
<?php endif; ?>

<?php if(isset($_POST['model_id']) && $_POST['model_id'] != ""): ?>
	<?php 
		$model_id = $_POST['model_id'];
		$cars = getCars($model_id);
	?>
	<select id="select_car">
			<option value="">Выберите модификацию</option>
			<?php foreach($cars as $car): ?>
					<option value="<?php echo $car['car_id'];?>"><?php echo $car['car_name'];?></option>		
			<?php endforeach; ?>
	</select>	

<?php endif; ?>
<!-- не видит скрипт по относительному пути, пришлось абсолютный писать, и добавление async не помогло-->
<script src="абсолютный путь к файлу/custom.js" async></script>

custom.js
$(document).ready(function(){
		
		$('#select_marka').change(function(){
		
			$.post(
				'php/search.php',
				{ marka_id:$('#select_marka').val()},
				function(res){
					$('#modele').html(res);
					$('#search-result').empty();
					$('#msg').empty();					
					$('#cars').empty();
					$('#searchForm').trigger( 'reset' );
				}
			)
			
		});
		$('#select_model').change(function(){
		
			$.post(
				'php/search.php',
				{ model_id:$('#select_model').val()},
				function(res){
					$('#cars').html(res);
					$('#search-result').empty();
					$('#msg').empty();
					
				}
			)
		});
		$('#select_car').change(function(){
		
			$.post(
				'php/search.php',
				{ car_id:$('#select_car').val()},
				function(res){
					$('#info').html(res);
					PCL_TooltipUpdate();
					$('#search-result').empty();
					$('#msg').empty();
					
				}
			)
		});
});


Вот так всё начинает дико тормозить при уже 3-4 обращении, потом вообще список перестаёт подгружаться.
Так как будто память забивается.

если вынести часть JS кода непосредственно в файл search.php и отключить файлик js из search.php

<script>$('#select_model').change(function(){
		
			$.post(
				'php/search.php',
				{ model_id:$('#select_model').val()},
				function(res){
					$('#cars').html(res);
					$('#search-result').empty();
					$('#msg').empty();
					
				}
			)
		});
</script>
<script>
		$('#select_car').change(function(){
		
			$.post(
				'php/search.php',
				{ car_id:$('#select_car').val()},
				function(res){
					$('#info').html(res);
					PCL_TooltipUpdate();
					$('#search-result').empty();
					$('#msg').empty();
					
				}
			)
		});
});
</script>


а первая часть остаётся подключена в index.php через файл js.
всё работает без тормозов. В чём дело, подскажите?

как я вижу проблемы выполнения кода в файле search.php... но почему?

P.S. Мне тут подсказывают что это не JS a jQuery))) Да. извините. Не обратил внимание.

Последний раз редактировалось graf_vorontsov, 22.07.2019 в 17:30.
Ответить с цитированием