Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задержка ajax запроса (https://javascript.ru/forum/misc/67486-zaderzhka-ajax-zaprosa.html)

arkadii_parovozov 20.02.2017 14:08

Задержка ajax запроса
 
Здравствуйте господа!

Подскажите, почему происходит задержка выполнения ajax запроса на 2-3 секунды?

Алгоритм следующий:
html:
<label>
<input type='radio' id='table1' value="1" onchange='table_check()' name='table1' checked /> текст
</label>

JS:
function table_check(){
load();
}

function load() {
$.post( 'page.php', {'param1': $('#table1').val()}, function(data){
		$('#echo_table').html(data);
	});
}


В блоке echo_table информация обновляется через 2-3 секунды, не могу понять почему...

рони 20.02.2017 14:24

arkadii_parovozov,
либо сервер тормознутый , либо data слишком большая

ksa 20.02.2017 14:44

Цитата:

Сообщение от arkadii_parovozov (Сообщение 444825)
function table_check(){
load();
}

Эта функция именно так и выглядит в твоем коде? :)
Т.е. смысл вызвать одну функцию, которая просто вызовет потом другую... Т.ч. есть мнение, что ты нам не все нарисовал. :nono:

arkadii_parovozov 20.02.2017 15:18

))) там и другие функции выполняются. Символов в data 2185 с пробелами.
Если я даже вешаю load(); непосредственно на "onchange" то ничего не меняется.

Rise, да должно мгновенно )) максимум за 0.1 секунды.

Что-то тормозит ответ, не могу понять что. В js нет функции которая бы показывала какой процесс сколько времени занимает?

arkadii_parovozov 20.02.2017 15:36

Денвер на локалхосте, виндос.

laimas 20.02.2017 15:38

Цитата:

Сообщение от arkadii_parovozov
В js нет функции которая бы показывала какой процесс сколько времени занимает?

Отладчик браузера выдает подетально время отклика каждого запроса к серверу.

arkadii_parovozov 20.02.2017 17:10

Сделал следующим образом:
function load() {
	var startTime = new Date();
//код js
        var endTime = new Date();
	var duration = endTime - startTime;
	alert(duration);
};

Выводит от 1 до 4 (так понимаю это миллисекунды). После того как закрываю окно, проходит около секунды-две, и обновляются данные в таблице. Причем после отработки этой функции js больше ничего не выполняет. Ничего не понимаю....

ksa 21.02.2017 08:13

Цитата:

Сообщение от arkadii_parovozov
там и другие функции выполняются

Тогда нам остается только гадать... А тебе самому посчитать время запроса-ответа на клиенте, а потом на сервере...

Dilettante_Pro 21.02.2017 10:38

Цитата:

Сообщение от arkadii_parovozov (Сообщение 444853)
Сделал следующим образом:
function load() {
	var startTime = new Date();
//код js
        var endTime = new Date();
	var duration = endTime - startTime;
	alert(duration);
};

Выводит от 1 до 4 (так понимаю это миллисекунды). После того как закрываю окно, проходит около секунды-две, и обновляются данные в таблице. Причем после отработки этой функции js больше ничего не выполняет. Ничего не понимаю....

Вы измерили время запуска функции отправки, а не время от отправки до ответа.
var endTime = new Date(); нужно размещать в обработчике ответа

arkadii_parovozov 21.02.2017 10:47

Так я-же говорю, что повесил функцию load() непосредственно на событие onchange

А сама функция load() выглядит так:
function load() {
var startTime = new Date();

	$.post( 'page.php', {'param1': $('#table1').val()}, function(data){

	        $('#echo_table').html(data);

	    });

        var endTime = new Date();
	var duration = endTime - startTime;
	alert(duration);

	};
setInterval(load,300000);


Алерт выводит от 1 до 4 миллисекунды, после того как закрываю окно проходит еще 1-2 секунды и обновляются данные в таблице #echo_table
<div>
<span id='echo_table'><img src='image/load.gif' width='30' height='30' style='margin:10px 0px;' /></span>
</div>


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