Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » AJAX

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Открыть новую тему     Написать ответ в эту тему

TBFG



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В этой теме хочется услышать мнения людей о технологии AJAX. В особенности интересно, если кто-то ее реализовал в действующих проектах. По моему технология заслуживает доверия, но естевственно, пойдет ли она в массы, зависит только от нас - т.е. WEB - разработчиков.


 
Ссылки по теме.

Ajax - Википедия.  
Технология, которая перевернёт веб
Сверхдинамичные веб-интерфейсы
Subsys_JsHttpRequest: динамическая подкачка данных без перезагрузки страницы
xAJAX на NoNaMe
Неплохой обзор движка xAJAX; в статье приведены нагляные примеры.
 
AJAX Matters - Asynchronous JavaScript and XML and XMLHTTP development information
Dynamic HTML and XML: The XMLHttpRequest Object
Client/Server Gateway JSAPI
Using Perl to do AJAX
 
Ajax programming community
[05.04.06] HTTP Streaming

Всего записей: 584 | Зарегистр. 10-07-2004 | Отправлено: 18:30 22-08-2005 | Исправлено: 6epcepk, 21:07 18-04-2006
edogs

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
safo

Цитата:
А пока народ не очень хочет писать сайты с использованием ajax, слишком тяжело реализовать индексацию контента.

Аякс не для контента, аякс для управления контентом.
Те кто это понимает давно пишут на аяксе тот же рубоард сию технологию местами использует.

----------
...

Всего записей: 1777 | Зарегистр. 25-07-2004 | Отправлено: 20:22 18-01-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
edogs
Да какая разница, для управления, или еще как назвать?
 
Вот именно, руборд(и еще масса других раскрученных) местами используют. А полностью наполнить контент странички(или видоизменить) в фоновом режиме? Слабо?
Сразу потребуется что-то думать с индексацией. Поисковики ничего не увидят из того, что видит и загружает пользователь.
Можно, например, отдельную ссылку на скрипт, типа "версия для печати". И скармливать его поисковикам. Но, все это, головняк.
 
 

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 10:58 19-01-2007
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А полностью наполнить контент странички(или видоизменить) в фоновом режиме? Слабо?

Вот расскажи нам такой умный, как в твоей реализации поставить ссылку на конкретную страницу многостраничного документа?
Что будет, если я хочу сохранить страницу?
 
Кроме проблем с поисковиками есть проблемы для пользователей.

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 11:14 19-01-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
Это уже о другом. Это можно тоже отнести к недостаткам. Но, тем не менее, это делается. Как? Я тебе не расскажу, потому-как сам допрешь, если захочешь.
 
Уже создана ссылочная модель форума. Для примера http://latebra.ru/incube.htm?forum:1-1$10

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 11:24 19-01-2007 | Исправлено: safo, 08:42 11-02-2007
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
некоторые аяксные страницы у меня 100% цпу жрут. вот gmail например в аяксном режиме открыть невозможно, а в обычном html режиме без проблем. но микрозофтский XMLHTTP объект сам по себе совсем неплохая штука, в ИЕ7 он даже прямо в сам браузер встроен. я его часто для скачивания отдельных файлов использую, а потом через Adodb.Stream объект на хард сохраняю. микрозофт кстати тоже XMLHTTP объект  используют (на MSDN страницах). и они кстати не так тормозят, как гмыло. гугал наверное думает, у всех 4-ый пентиум

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 05:02 21-01-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WRFan
проблемы, скорее, с браузером.. либо с тем, что на него навешено.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:06 21-01-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WRFan

Цитата:
 потом через Adodb.Stream объект на хард сохраняю

 
А можно подробнее. Или ссылочку. Можно в личку.

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 12:27 21-01-2007
N Sensey N



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня кешируются почему то результаты ajax скрипта (или php) не пойму...
 
Решение нашел такое -  
 
вставил в скрипт
 
    var currentTime = new Date();
    var seconds = currentTime.getTime();
 
и в запросе
 
    xmlObj.open ('POST','ajax_check_login.php?login='+name+'&seconds='+seconds, true);
 
помогло...
ну есть чувство что кеширования результата быть не должно...
 
в php скрипте уже че толлько не прописал...
 
header("Content-Type: text/html; charset=windows-1251");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
 
А все равно без добавления seconds к запросу - не помогают заголовки...
 
Это у всех так?
 
 
 


----------
sPaiz-Nuke - Free PHP CMS Web Design and Development Портал для израильтян

Всего записей: 1409 | Зарегистр. 01-10-2002 | Отправлено: 00:59 22-01-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
N Sensey N
Наверное используете какую-то библиотеку? Показали бы скрипт.

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 09:36 22-01-2007
N Sensey N



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
safo
не.. скрипт самописный... самый простой что есть...
 

Код:
function Check_Login(name)
{
    var currentTime = new Date();
    var seconds = currentTime.getTime();
 
    var xmlObj = null;
    if (window.XMLHttpRequest)
    {
        xmlObj = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else
    {
        return false;
    }
    xmlObj.onreadystatechange = function()
    {
        if (xmlObj.readyState == 4)
        {
            if (xmlObj.status == 200)
            {
                if (xmlObj.responseText==1)
                {
                    alert('Этот ник занят. Попробуйте придумать другой!');
                }
                else
                {
                    alert('Ура! Ник свободен!');
                }
            }
        }
    }
 
    xmlObj.open ('POST','ajax_check_login.php?login='+name+'&seconds='+seconds, true);
    xmlObj.send(null);
}


----------
sPaiz-Nuke - Free PHP CMS Web Design and Development Портал для израильтян

Всего записей: 1409 | Зарегистр. 01-10-2002 | Отправлено: 13:55 22-01-2007 | Исправлено: N Sensey N, 13:57 22-01-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
N Sensey N
Скрипт нормальный. Должно работать.
А Вы на локальный сервер запросы шлете? Если нет, может прокси кеширует. И каким браузером? Для IE нужно  xmlObj.send() делать. И попробуйте параметр login в send передавать  xmlObj.send('login='+name), а в open только имя скрипта. После open поставьте в заголовок:
xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
Еще попробуйте xmlObj.abort() в конце обработки овета
 
Больше пока ничего криминального не вижу.

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 18:19 22-01-2007 | Исправлено: safo, 18:44 22-01-2007
WRFan



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А можно подробнее. Или ссылочку. Можно в личку.

 

Код:
 
<SCRIPT LANGUAGE="vbscript">
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
set ADOStream = CreateObject("Adodb.Stream")
 
 
XMLHTTP.open "GET", "http://www.desperateblog.com/wp-content/uploads/2006/05/hilary-duff-in-paris-airport-2.jpg", False
XMLHTTP.Send
ADOStream.type = 1 'adTypeBinary
ADOStream.open
ADOStream.write XMLHTTP.responseBody  
dstfile2 = "c:\hilary-duff-in-paris-airport-2.jpg"
ADOStream.savetofile dstfile2, 2 'adSaveCreateOverWrite
ADOStream.close
 
</SCRIPT>
 

 
тоже самое конечно работает и с JScript-ом, только синтаксис несколько отличается, например объекты вызываются через  "new ActiveXObject" и т.д. инфа:
 
XMLHttpRequest Object:
 
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp
 
ADO Objects and Interfaces:
 
http://msdn.microsoft.com/library/en-us/ado270/htm/mdmscadoobjects.asp?frame=true
 
Кстати, аяксная замена отдельных XML элементов не представляет проблем. Но с полной заменой innerHTML страницы, т.е. одного документа другим БЕЗ location.replace-а документа проблема в том, что CSS стили не изменяются, а перенимаются из предыдущего документа, даже если убить STYLE элемент страницы ПОЛНОСТьЮ! единственное решение - убить BODY элемент страницы, превратить страницу в FRAMESET (документ не может содержать одновременно фреймсет и body) и динамически создать FRAME с содержанием новой страницы. таким образом, документ остаётся прежним, только фрейм меняется.
 
Вот пример IE bookmarklet-а, который открывает новый фрейм или картинку в том же самом документе. картинка вставляется в document.body (предварительно старая картинка убивается через removeNode), а настоящие страницы вставляются в новосозданный фрейм. Microsoft.XMLHTTP объект используется лишь для проверки ResponseHeader-а, всё остальное браузер и без него делает:
 
сначала создаём bookmarklet, который вписывает новый скрипт в HTML элемент документа:
 

Код:
 
javascript:(function(){var script=document.createElement('script'); script.src='file://localhost/PathTo/Surf+.js'; document.getElementsByTagName('HTML')[0].appendChild(script);})()
 

 
Затем создаём сам скрипт:
 
слишком длинный, чтобы здесь писать, взгляните тут:
 
http://home.arcor.de/wrfan/files/XMLHTTP.js
 
с помощью XMLHTTP.responseText-а можно конечно заменить innerHTML BODY элемента:
 

Код:
 
XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP")
XMLHTTP.open ("GET", "http://www.whatever.com/whatever.html", false)
XMLHTTP.send();
BODY=document.getElementsByTagName('BODY')[0]
BODY.innerHTML = ""
BODY.innerHTML = XMLHTTP.responseText
 

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

Всего записей: 5275 | Зарегистр. 25-11-2002 | Отправлено: 16:36 26-01-2007 | Исправлено: WRFan, 16:37 26-01-2007
Borodino

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
удалено

Всего записей: 585 | Зарегистр. 17-08-2006 | Отправлено: 08:33 27-01-2007 | Исправлено: Borodino, 08:25 16-03-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WRFan
Спасибо. Разберусь

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 18:27 28-01-2007
myaGi

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
люди просвятите.
юзаю xajax.
есть index.php. внутри есть инклюд menu.php в котором подключаю xajax и выполняю банальную вставку текста. понимаю что это из-за вложенной инклюдности. если же делаю подключение xajax в самом index.php то все ок, но мне этот вариант не подходит, т.к. в menu.php  идут определения переменных и т.п. что посоветуете?

Всего записей: 78 | Зарегистр. 24-04-2006 | Отправлено: 10:45 30-01-2007
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Во-первых, есть отделаьная тема по xajax'y.
Во-вторых, в чем проблема? Может при получение яваскрипта пути не правильно указал?

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 11:24 30-01-2007
myaGi

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ошибки вываливаются именно по поводу передачи данных а не по поводу подключения аякса
п.с. сорри за оффтоп

Всего записей: 78 | Зарегистр. 24-04-2006 | Отправлено: 12:34 30-01-2007
safo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
myaGi
В подключаемом скрипте формируете Content-Type?

Всего записей: 84 | Зарегистр. 25-10-2003 | Отправлено: 08:47 11-02-2007
supervisork

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
И вообще, господа, есть ссылки на нормальные примеры, кроме gmail.com?

http://webdesign.site3k.net/consulting/ajax.html (если написал коряво, звиняюсь - первый раз на этом форуме пишу, не знаю, как вставлять теги). Я не знаю, насколько пример нормальный, но там описаны все (или почти все) "За" и "Против". Суть такая:
1) Нового ничего, просто некоторые давно придуманные трюки постепенно становятся популярны.
2) Штука хорошая, но нужно учитывать некоторые вещи: юзер гасит яваскрипт из соображений безопасности (бывает), яакс не работает, сайт, построеный на нем - тайна белого экрана
3) АктивИкс вааще подавляется браузерами (они еще ругаются, мол компоненты не безопасны), надеяться на него нельзя
Общие выводы:
Выполнение подзапросов, для быстрого уточнения данных - проверка доступности имени юзера, выбор некоторого перечня товаров в соответствии с категорией и т. д., особенно, если скрипты учитывают возможность отключки технологии и способны расчитывать ТОЛЬКО не сервак - хорошо. Создание сайтов целиком полагающихся на браузер пользователя - плохо (не надежно, и пользователь же обматюкает, того, кто такой сайт сделает).

Всего записей: 8 | Зарегистр. 10-02-2007 | Отправлено: 14:04 12-02-2007 | Исправлено: supervisork, 14:09 12-02-2007
Reznikoff

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здраствуйте. использую JsHttpRequest
Есть форма. в ней допустим два поля (логин и емеил). При нажатии на кнопку, с помощью JsHttpRequest содержание этих 2х полей отправляется на сервер, тот что то делает и отвечает. Так вот. если ответ один (не ошибок), то данная форма должна обычным методом отправлятся на сервер, а если ответ другой (ошибка, логин занят), то с помощью дива показываю ошибку. вот примерный код:
 

Код:
 
<script type="text/javascript" language="JavaScript"  
src="JsHttpRequest.js">
</script>
<script type="text/javascript" language="JavaScript">
function doLoad() {
    var req = new JsHttpRequest();
    req.onreadystatechange = function()
    {
        if (req.readyState == 4)  
        {
            return true;
        }
    }
    req.open(null, 'ajax.php', true);
    req.send( { q: 'preved' } );
    return false;
    
}
</script>
 
<form id="frm" method="POST" onsubmit="return doLoad();">
    Text: <input type="text" name="q">
    <input type="submit" value="next">
</form>
 
<div id="result" style="border:1px solid #000; padding:2px"></div>
 

ajax.php возвращает просто строку (ошибок нет, т.е. эта форма должна передаваться на сервер традиционным способом). Но JsHttpRequest срабатывает, а форма не отправляется! Неотправляется наверно потому, что в самом конце стоит return false;
Если же убрать этот return false; то не срабатывает JsHttpRequest и форма отправляется.
Т.е. смысл  - обработка данных перед отправлением на север. Если ошибок нет, отправляем данные на сервер, если ошибки есть (например занят емеил) показываем ошибку а форму не отправляем.

Всего записей: 62 | Зарегистр. 18-07-2005 | Отправлено: 06:54 25-02-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Компьютерный форум Ru.Board » Интернет » Web-программирование » AJAX


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru