[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Утечка данных при цикличной отправке данных
Игорь_Vasinsky
есть функция, в которой производиться отправка данных в формате json посредством ajax

функция + рекурсия

подготовку произвожу стандартно

              var xmlhttp;

if ( window.XMLHttpRequest ) {
// IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// IE6, IE5
xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );
}
// обрабатываем ответ
xmlhttp.onreadystatechange = function () {
// если запрос к скрипту удачный
if ( xmlhttp.readyState == 4 ) {
document.getElementById("data").innerHTML=xmlhttp.responseText;

}
}



формирование и отправка

xmlhttp.open ("GET", "getdata.php?object="+object+"&block="+block+"&hall="+hall+"&row="+row+"&place="+place+"&price="+price+"&rand="+Math.random(), true);
xmlhttp.send ();



Данные отправляю в сессию, и сразу мониторю.

в итоге заметил что данные иногда доходят частично, не по пол пакета, а - с пропуском в 1-2 пакет, через раз. иногда уходит каждый пакет.


если делать alert чего либо перед отправкой - то всё пучком, всё уходит + всё приходит

setTimeOut() почемут не спасает.

В чём может быть проблема??? И КАК ПОФИКСИТЬ?

браузер - хром



Спустя 5 минут, 19 секунд (13.08.2012 - 13:42) ApuktaChehov написал(а):
Вы уверены, что предыдущий запрос успевает завершится перед тем, как отправляется новый запрос?

Спустя 2 минуты, 18 секунд (13.08.2012 - 13:44) Игорь_Vasinsky написал(а):
честно говоря, я об этом даже не задумывался)))
а какие действия можно предпринять? как удостовериться в полной отправке данных?

Спустя 18 минут, 19 секунд (13.08.2012 - 14:02) johniek_comp написал(а):
Игорь_Vasinsky
запускай запрос после полного формирования dom

или добавляй abort

Спустя 2 минуты, 31 секунда (13.08.2012 - 14:05) johniek_comp написал(а):
Игорь_Vasinsky
ohmy.gif 0_о ты слона поменял smile.gif

Спустя 3 минуты, 27 секунд (13.08.2012 - 14:08) Игорь_Vasinsky написал(а):
Цитата
запускай запрос после полного формирования dom

думаешь?

просто страница не рефрешиться, а коли-во данных (посылок) меняется.

Спустя 5 минут, 41 секунда (13.08.2012 - 14:14) Игорь_Vasinsky написал(а):
без изменений.


Спустя 8 минут, 48 секунд (13.08.2012 - 14:23) johniek_comp написал(а):
Игорь_Vasinsky
тогда попробуй ошибки почитать, может что-то с обработчиком не так


var xmlhttp;

if ( window.XMLHttpRequest ) {
// IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// IE6, IE5
xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );
}
// обрабатываем ответ
xmlhttp.onreadystatechange = function () {
// если запрос к скрипту удачный
if ( xmlhttp.readyState == 4 ) {
if (xmlhttp.status == 200)
alert(xmlhttp.responseText)
else
alert(xmlhttp.statusText)
document.getElementById("data").innerHTML=xmlhttp.responseText;

}

}


Спустя 1 минута, 5 секунд (13.08.2012 - 14:24) Игорь_Vasinsky написал(а):
да не.. везде 200, но если читать xmlhttp.responseText - то иногда пусто бывает.

сменил на синхронный запрос.. вроде 5 из 5 все пришло. щас ещё потестю.

Спустя 5 минут, 25 секунд (13.08.2012 - 14:29) Игорь_Vasinsky написал(а):
вроде летает. чё так с асинхронным.. незнай.

Спустя 4 минуты, 57 секунд (13.08.2012 - 14:34) Игорь_Vasinsky написал(а):
http://vasinsky.koding.com/work/test/kongress-hall.php

есть баг. пока не решён.

если выбрать ряд, потом снять отметки с нескольких мест - и снова выбрать ряд - то всё путается biggrin.gif

Спустя 4 минуты, 45 секунд (13.08.2012 - 14:39) sharki написал(а):
Юзаешь Jquery, но не юзаешь Jquery $.ajax() ! Странный ты человек

Спустя 3 минуты, 47 секунд (13.08.2012 - 14:43) Игорь_Vasinsky написал(а):
jq юзал что быстренько получить доступ к последующим после определённого элемета элементам... так то мне на чистом приятней работать.

+ там много (в полной версии) что на jq, так что без потерь.

Спустя 1 минута, 2 секунды (13.08.2012 - 14:44) sharki написал(а):
Игорь_Vasinsky
Много чего?) И какие потери?

Спустя 1 минута, 19 секунд (13.08.2012 - 14:45) Игорь_Vasinsky написал(а):
я имею ввиду что jq в полной версии используется для других целей
в этом же месте мне просто нужен был очень next()

так что плакать что весит библия, а юзается тока next() - нет повода.

Спустя 3 минуты, 55 секунд (13.08.2012 - 14:49) Игорь_Vasinsky написал(а):
у $.ajax есть свои плюсы как я вижу - удобная передача доп параметров, например вкл выкл асинхр режима, и прочее,но как я и говорил - чистый JS как то приятней. просто не хотел мудохаться с next()

Спустя 10 секунд (13.08.2012 - 14:49) inpost написал(а):
Игорь_Vasinsky
А цикличность зачем? Для выбора всего ряда? Я что-то этот момент не понял...

Спустя 2 минуты, 34 секунды (13.08.2012 - 14:52) sharki написал(а):
Игорь_Vasinsky
Ну раз используешь JQ, это хорошо, давно пора не писать всё с нуля. Смотри как лаконично всё выходит.
$.get('getdata.php',
{
object: object,
block:block,
hall:hall,
row:row,
place:place,
price:price,
rand:Math.random()
},
function(data) {
// ответ от сервера
alert(data);
});


Такое ощущение что ты следуешь принципу - не использовать Jq, потому что-то кто-то сказал что это плохо :) Если не так, то забираю свои слова обртно

Спустя 2 минуты, 4 секунды (13.08.2012 - 14:54) Игорь_Vasinsky написал(а):
да.. там после кнопы "ряд" все места перебором подбираю (div с class="this") - пока не будет какой нить другой элемент

можно было бы в span их сувать - но тож писанины бы получилось

sharki
да я после первого твоего коммента задумался уже на этот вариант biggrin.gif

не - JQ не плохо, говорю же - нратся мне чистым js практиковать.

Спустя 2 минуты, 23 секунды (13.08.2012 - 14:56) inpost написал(а):
Игорь_Vasinsky
Пакетом надо отмечать. То есть перебором собрал массив полей и отправил на сервер, сервер вернул ответ и ты отметил весь пакет за один раз. Отправлять такие вещи циклично - это неправильно и ещё не забываем, что задержка между Ajax отправкой должна быть не менее 1 секунды, где-то.

Спустя 4 минуты, 2 секунды (13.08.2012 - 15:00) Игорь_Vasinsky написал(а):
подумаю над этим.

у меня всё асинхронно. ни че не отправиться следущее - пока не получен ответ от предидущей передачи. с синхронным запросом всё теряется biggrin.gif

Спустя 1 минута, 31 секунда (13.08.2012 - 15:02) sharki написал(а):
Игорь_Vasinsky
Цитата
ни че не отправиться следущее - пока не получен ответ от предидущей передачи.

Это и есть определение синхронности.

Спустя 36 секунд (13.08.2012 - 15:02) inpost написал(а):
Игорь_Vasinsky
Просто асинхронный запрос результат вернуть может раньше, чем допустимое время отправки нового запроса, поэтому он может и теряться или не отправляться самим браузером.

К тому же зачем думать, тут добавить ещё 1 функцию отдельную и всё будет ок. Не думать надо, а делать smile.gif

Спустя 3 минуты, 27 секунд (13.08.2012 - 15:06) Игорь_Vasinsky написал(а):
ну я понял. формировать многомерный массив, яссонить, отправлять - принимать разяссонивать разбирать массив и работать с данными.

sharki
ну.

щас пакеты отправляются последовательно - т.е. синхронно

или я чёт путаю в терминалогии?

Спустя 2 минуты, 35 секунд (13.08.2012 - 15:08) sharki написал(а):
Я наверное тебя не понял, с твоим предложением, как будто ты дал определение асинхронности
Цитата
у меня всё асинхронно. ни че не отправиться следущее - пока не получен ответ от предидущей передачи. с синхронным запросом всё теряется


Спустя 59 минут, 53 секунды (13.08.2012 - 16:08) bodja написал(а):
Игорь_Vasinsky
Вам как завернуть, biggrin.gif
асинхронно с последовательной передачей данных,тоесть пока не примем ,следующее не передаем или асинхронно с паралельно-независимой передачей данных.
В первом можно сделать на функции,второе прийдется рулить обьектами.

Спустя 1 час, 35 минут, 30 секунд (13.08.2012 - 17:44) Игорь_Vasinsky написал(а):
значит я не правильно понял эти способы biggrin.gif

Спустя 13 часов, 9 минут, 38 секунд (14.08.2012 - 06:53) Игорь_Vasinsky написал(а):
sharki
не удержался, переписал


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.