Задержка 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 секунды, не могу понять почему... |
arkadii_parovozov,
либо сервер тормознутый , либо data слишком большая |
Цитата:
Т.е. смысл вызвать одну функцию, которая просто вызовет потом другую... Т.ч. есть мнение, что ты нам не все нарисовал. :nono: |
))) там и другие функции выполняются. Символов в data 2185 с пробелами.
Если я даже вешаю load(); непосредственно на "onchange" то ничего не меняется. Rise, да должно мгновенно )) максимум за 0.1 секунды. Что-то тормозит ответ, не могу понять что. В js нет функции которая бы показывала какой процесс сколько времени занимает? |
Денвер на локалхосте, виндос.
|
Цитата:
|
Сделал следующим образом:
function load() {
var startTime = new Date();
//код js
var endTime = new Date();
var duration = endTime - startTime;
alert(duration);
};
Выводит от 1 до 4 (так понимаю это миллисекунды). После того как закрываю окно, проходит около секунды-две, и обновляются данные в таблице. Причем после отработки этой функции js больше ничего не выполняет. Ничего не понимаю.... |
Цитата:
|
Цитата:
var endTime = new Date(); нужно размещать в обработчике ответа |
Так я-же говорю, что повесил функцию 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> |
arkadii_parovozov,
Снаружи функции обработки ответа вы меряете время только запуска функции отправки. Надо так:
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);
});
};
load();
И зачем setInterval? Чтобы просто ждать, пока запустится load? |
Цитата:
|
Переставил счетчик на получения ответа от сервера, теперь алерт показывает 2000-3000.
Теперь понятно что тормозит процесс файл обработчик page.php спасибо Dilettante_Pro! Теперь у меня другая беда... )) Этот файл каким-то образом сбивает настройки которые я выставляю в функции load. То-есть в начале функции стоит код
$('.td_6, .td_8, .td_9').css('display','block');
а по умолчанию у этих ячеек 'display','none'. Так вот, при запуски функции ячейки появляются, а после получения ответа "data" сбрасываются в первоначальное свойство. В ответе "data" присутствует js код, но он не связан со стилями. Может есть какие-то специальные требования к формату ответа? Может из за этого он ломает настроики которые были заданны в начале функции load? |
Цитата:
Новый контент идет без обработчиков. Для решения проблемы - используй делегирование событий, а не прямое навешивание на элементы... Свойства придется менять каждый раз при обновлении. |
Скажите, почему не вызывается функция из такой конструкции:
$(document).ready(function() {
$.post( 'page.php', {'value1':$('#pole1').val()}, function(data){
$('#echo_data').html(data);
load();
});
});
function load() {
//-----
}
|
Ну пи...ец!!! 4 часа корячился с кодом из за этой ерунды:
if(result!="")
{а
$.post( .....
//------
Это просто что-то нереальное..... php сразу бы меня зарезал, указав на строку с ошибкой, а js молчит и ухмыляется.... Может js можно как-то настроить чтобы он выводил ошибки в синтаксисе? |
| Часовой пояс GMT +3, время: 16:45. |