Показать полную графическую версию : AJAX - динамическая подгрузка данных без перезагрузки страниц
Страниц :
1
2
3
4
[
5]
6
7
8
Vlad Drakula
01-09-2006, 12:43
E-mail
интересная статья...
но вот эта:
http://htmlcoder.visions.ru/JavaScript/?29
на мой взгляд является более насущьной...
Vlad Drakula ну вообщето это косвенно относится к теме топика:)
мне более привычен второй вариант решения, я его считаю более удобочитаемым, по этому мне не грозит обжорство ie... ну или третmt полурешение (в п.с.), кроме того там опечатка в предпоследнем абзаце:)
VeshchiyOleg
15-09-2006, 15:54
попробовал я аякс...
интересная задумка, но, на мой взгляд неудачное исполнение ActiveX компоненты для internet explorer
или просто сырое еще...
не надо меня разубеждать в том, что ПОДАВЛЯЮЩЕЕ БОЛЬШИНСТВО обычных пользователей интернет используют (извините за тавтологию) IE - не поверю
лучшим мне все же показалось решение
* Subsys_JsHttpRequest_Js: JavaScript DHTML data loader.
* (C) 2005 Dmitry Koterov, http://forum.dklab.ru/users/DmitryKoterov/
правда я все-таки закомментировал строки:
// Try to use built-in loaders.
var req = null;
if (window.XMLHttpRequest) {
try { req = new XMLHttpRequest() } catch(e) {}
// } else if (window.ActiveXObject) {
// try { req = new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
// if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) {}
}
т.е. запретил использование ActiveX (для IE)
ибо устал бороться с эксплорером: он виснет!!!
максимум, чего я сумел добиться так это от 30 минут до часа нормальной работы (запросы каждые 5 секунд - чат, обсуждался в одной из тем на этом форуме) без зависания
а потом все равно виснет (интернет эксплорер не подает признаков жизни от 30 секунд до 5 минут, потом непродолжительное время живет и опять уходит в себя)
без ActiveX работает немного медленнее, но стабильно
зы
говорят, в IE7 есть встроенная поддержка XMLHttpRequest
не видел
ззы
методов не добавлял (текст потер) - приношу глубочайшие извинения за дезинформациюи то, что пытался присвоить чужие лавры себе - перепутал с другой библиотекой, которую пробовал до Subsys_JsHttpRequest_Js
Prisoner
16-09-2006, 09:48
VeshchiyOleg, виснуть он может и по иной причине: утечки памяти. Если в обработчике загрузки данных создавать HTML элементы, то IE каждый раз выделяет память, но не чистит ее, если элементы не удален ручками. Возможно, что прbчина зависания как раз в этом (более того, автор библиотеки Дмитрий Котеров, если почитать комментарии порой на это указывает, поглядите функцию dummy), поглядите этот топик, где-то в нем Влад давал ссылку на инструмент помогающий локализовать эти memory leaks. Кстати, вот Вы говорите, что добавили метод, а мне видится, что изменили и не значительно. Поясните, плиз.
Vlad Drakula
21-09-2006, 22:44
VeshchiyOleg
1) я занимаюсь разработкой AJAX системм на много больше чем чат... и при этом не системма не очень то часто повисает
2) утечти памяти не связаны с использованием ActiveX, т.е. память в IE и без него течет
3) тормоза описываемые вами очень напоминают на неправильную верстку...
4) сегодня делал тест в IE отображение таблицы из 6,5МБ XML ответа сервера, IE выжил нормально!
5) Subsys_JsHttpRequest_Js организует системмы удаленного вызова, а системмы клиент / сервер на нем не построишь! (если и построишь то не очень прямо...), XMLHttpRequest больше подходит для организации клиент / сервер
VeshchiyOleg
23-09-2006, 15:57
не нужно недооценивать чат как таковой! не думаю, что "системмы на много больше чем чат" требуют ежесекундного обновления дабы отображать актуальную информацию
также сомневаюсь, что возникает потребность выполнять одновременно (именно одновременно) два и более запросов к серверу
память в ие течет... не спорю...
в файрфоксе тоже течет (при должном старании и установке "нужных экстэншенов") ;)
однако при отключении именно ActiveX компонент проблемы с утечкой памяти почему-то пропали
и дело тут, я думаю, не в объеме одного запроса, а в частоте и количестве запросов и обращений к ActiveX - где-то там внутри наверняка есть чистильщик памяти и он не успевает справляться с теми объемами, которые я его заставляю обрабатывать (ну это мое IMHO)
зы
5) не понял - можно поконкретнее???
где-то в этом или другом форуме была восторженная ссылка на prototipe (набор классов для javascript)
вещь отличная, монументальная, содержит кроме всего прочего методы XMLHttpRequest
однако я не готов предложить посетителям моего сайта каждый раз качать пару сотен кБ скриптов
Vlad Drakula
23-09-2006, 19:37
VeshchiyOleg
не думаю, что "системмы на много больше чем чат" требуют ежесекундного обновления дабы отображать актуальную информацию
я вот зря... требуют... и объем данных для передбчи зачастую на много больше чем в чате...
также сомневаюсь, что возникает потребность выполнять одновременно (именно одновременно) два и более запросов к серверу
вполне зря... т.к. у меня зачастую идет порядка 16 паралельных запросов...
однако при отключении именно ActiveX компонент проблемы с утечкой памяти почему-то пропали
и дело тут, я думаю, не в объеме одного запроса, а в частоте и количестве запросов и обращений к ActiveX - где-то там внутри наверняка есть чистильщик памяти и он не успевает справляться с теми объемами, которые я его заставляю обрабатывать (ну это мое IMHO)
я бы вам посоветовал почитать несколько статей о том как и из-за чего течет память в IE
не понял - можно поконкретнее???
где-то в этом или другом форуме была восторженная ссылка на prototipe (набор классов для javascript)
вещь отличная, монументальная, содержит кроме всего прочего методы XMLHttpRequest
однако я не готов предложить посетителям моего сайта каждый раз качать пару сотен кБ скриптов
читал я много разных статей... и про это тоже, но нужно делать личный выбор осмысленно а не под влиянием какойнибуть статьи...
Subsys_JsHttpRequest_Js передает JS код, и в рекомндациях к нему написано что аснхонные запросы ему даже вредны, т.е. сервер отдает на клиентскую часть код который клиентская чать испольняет, здесь идет четкая привязка к тому что принимать ответ сервера быдет именно броузер, к примеру если XMLHttpRequest то можно построить системму так что будет один сервер и будет несколько видов клиенетов, один из которых будет написан на JS, и в принцепе серверу будет наплевать какой клиент с ним общается, конечно Subsys_JsHttpRequest_Js можно такое написать но это будет уже в обход... и просто доказывание что и Subsys_JsHttpRequest_Js это тоже умеет. с помощью XMLHttpRequest можно полностью разделить клиентской и серверное приложение и передовать только данные, а с Subsys_JsHttpRequest_Js такое не получится (идеология не та...)
VeshchiyOleg
25-09-2006, 09:40
Subsys_JsHttpRequest_Js передает JS код,
ТОЛЬКО в случае, если недоступны window.XMLHttpRequest, ActiveXObject("Microsoft.XMLHTTP"), ActiveXObject("Msxml2.XMLHTTP")
именно в такой последовательности
если не секрет, поделись опытом:
какими библиотеками пользуешься? (или самопис??? нельзя ли выложить для скачивания и рассмотрения и конструктивной критики/выражения восхищений???)
действительно ли в IE не виснет???
Vlad Drakula
25-09-2006, 21:29
VeshchiyOleg
какими библиотеками пользуешься?
в качестве ядра Sarissa
еще очень интересная вещь: ActiveWidgets
действительно ли в IE не виснет???
ie действительно достаточно устойчив, если держать его постоянно в апдейте + аккуратно писать код, то он может крутить в себе достаточно тяжолые AJAX приложения.
если держать его постоянно в апдейте
ну это-то зависит не от тебя, а от пользователей :)
Vlad Drakula
26-09-2006, 01:29
mar
ну это-то зависит не от тебя, а от пользователей
но всегда можно запросить у пользователя версию брозера, и если она не свежая то предложить для начала обновиться...
учитывая что система делает не мало трафика то трафик на апдейты это просто копейки...
VeshchiyOleg
26-09-2006, 10:03
запросить у пользователя версию брозера, и если она не свежая то предложить для начала обновиться...
гыыы
а зачем тогда кроссбраузерность???
узнаем версию браузера и если это не файрфокс просим закачать его и установить ;)
и все довольны
VeshchiyOleg
:up:
Vlad Drakula
ты извини, но если это не интранет-приложение, где сотрудников (а точнее админа) можно просто к чему-то обязать, то люди просто не обратятся к такому ресурсу. Это, знаешь ли очень надо захотеть получить именно эту информацию, чтоб позволить авторам диктовать себе условия - каким броузером я буду смотреть на его ресурс =)
Vlad Drakula
26-09-2006, 20:38
VeshchiyOleg
ФФ не принциписально лучьше ЕИ и JS в нем работет не принципиально быстрее... и не скажу что он безглючнее....
mar
а есть еще один класс веб приложений... которые видут себя как интранет, но при этом являются доступными из глобальной сети.
VeshchiyOleg
26-09-2006, 21:27
вообще-то мы в этой теме говорим не о JS в общем, а об AJAX в частности
и не мне об этом напоминать
а в плане AJAX у меня к window.XMLHttpRequest в FF претензий как не было сначала, так и нет
вот кто бы поделился как кто для себя решает проблему кроссбраузерности в аяксе, а именно тормоза при работе с ActiveX (если таковые замечаются)
хотя, может, я на них зазря грешу???
сарисса меня не вдохновила - растянуто на 4 файла
всё настолько запутано, что без мануала разобраться сложно
да и объем внушительный
если это лишь ядро, то я представляю, какая обвязка
и меня несколько коробит такой подход к кроссбраузерности, когда в самом начале скрипта определяют браузер, и внутри каждого блока пишут javascript именно под этот браузер - ведь логика приложения не должна зависеть от браузера... IMHO
вот, например, на http://maps.google.com/ вряд ли кто жалуется, что подтормаживает ибо там картинки огромные, да и обновление только по запросу пользователя
хотя именно этот сайт вдохновил меня 2 месяца назад вплотную заняться технологией AJAX
я пытался разобрать javascript с него
кстати, никто не подскажет, как (чем) отформатировать (привести в читабельный вид) javascript и обратно поубирать лишние пробелы и символы конца строки
однако, у меня ничего не вышло
но, в том же subsys также на примере этого же сайта все было подробно разложено по полочкам и этот класс был создан, так сказать, по образу и подобию, с той лишь разницей, что вместо встроенного iframe (при отсутствии XMLHttpRequest и ActiveX) использовался динамически создаваемый объект script, что, по заверениям автора, идет дальше в этом начинании и переплевывает сам гугл с его сотнями программеров
вот на это я и повелся
итак.
кто как для себя (для пользователей сайта) решил проблему с тормозами Эксплорера?
версию ответа с предложением обновить браузер не предлагать - не актуально, шутка два раза не прокатывает
Vlad Drakula
26-09-2006, 22:51
VeshchiyOleg
вот кто бы поделился как кто для себя решает проблему кроссбраузерности в аяксе, а именно тормоза при работе с ActiveX (если таковые замечаются)
хотя, может, я на них зазря грешу???
1) сарисса
2) разница в производительность FF и IE не очень велика
сарисса меня не вдохновила - растянуто на 4 файла
всё настолько запутано, что без мануала разобраться сложно
да и объем внушительный
1) не обязательно брать все четыре файла... мне и 3х хватило...
2) дело втом что сариса делает очень важную вещь: она приводит набор объектов к одинаковому виду... к примеру она правильно создает объект window.XMLHttpRequest в IE... создает объекты для работы XML / XSL / XPath...
3) я с помощью ее за день смог заставить проект запустится под FF... (до этого он более 7 месяцев разрабатывался только под IE...)
кто как для себя (для пользователей сайта) решил проблему с тормозами Эксплорера?
эти траблы как правило из-за не очень хорошей организации программы, и тормозной верстки...
я вот сегодня делал сортировку в датагридах... так к примеру датагрид меняет стейт примерно за 1с... не плохо если учитывать что пинг до серера в районе 200-300... (сортировка происходит на сервере)
Prisoner
27-09-2006, 10:55
VeshchiyOleg, на счет стайлеров тут (http://www.polystyle.com/) поглядите. Да, кряков не просить, на этом форуме варез запрещен.
Здравствуйте, у меня такая проблема:
<script>
<!--
var req;
var method='POST';
function loadXMLDoc(url,str)
{
if(window.XMLHttpRequest)
{
req=new XMLHttpRequest();
req.onreadystatechange=processReqChange;
req.open(method,url,false);
req.send(null);
}
else if(window.ActiveXObject)
{
req=new ActiveXObject("Microsoft.XMLHTTP");
if(req)
{
req.onreadystatechange=processReqChange;
if(method=='POST'){
req.open('POST',url,false);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send('&submit=1&'+str+'&');
}
if(method=='GET'){
req.open('GET',url + '?submit=1&ans=some_text',true);
}
}
}
}
function processReqChange()
{
if(req.readyState == 4)
{
//clearTimeout(ab);
document.form1.response.value=req.responseText;
}
}
function requestdata(params)
{
loadXMLDoc('http.php',params);
}
-->
</script>
При методе Пост работает отлично, нежели при методе гет, при гете не пашет((
Я взял этот код со второй страницы топика, немного переделал, у меня была раньше проблема, что работал ТОЛЬКО гет, сейчас все наоборот, помогите пожалуйста.
Prisoner
27-09-2006, 15:51
megawar
1) Где Вы "со второй страницы топика" код взяли? Уточните, пожалуйста.
2) Чем выражается "не работает"? Больше данных, пожалуйста: в каких броузерах выявляется проблема, при каких значениях параметров, в каких участках кода (кстати, задав себе эти вопросы в 99% случаев проблему можно решить самостоятельно, что гораздо быстрее)?
3) Поглядите в сторону Класс XMLHttpRequest, используемый в Mozilla и FireFox, в настоящий момент присутствует только в этих браузерах (поддержка этого класса в Opera 8.01 весьма ограничена). У него есть небольшой недостаток: при умолчательных настройках FireFox запрещено загружать данные откуда-то, кроме как с текущего сайта.
Метод ГЕТ в данном коде не работает ни в одном браузере, пост наоборот работает.
Код переделал этот : http://forum.oszone.net/thread-46763-2.html
Посоветуйте какой класс можно использовать всемсто этого, где можно найти примеры
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.