Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ajax, Небольшой вопрос 
V
    Опции темы
tikitiki
Дата 7.5.2008, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 10.5.2005

Репутация: нет
Всего: нет



Небольшой вопрос. Ответьте, пожалуйста. Если сайт есть на php+mysql и я хочу применить ajax местами для добавления кода или для его изменения, то реально ли ajax применить? Насколько трудоёмко или лучше сайт начинать на ajax делать с нуля?


--------------------
PM   Вверх
Grig
Дата 7.5.2008, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: 2
Всего: 16



Это абсолютно несложно =)
просто надо вписать Яваскриптовые функции по отправке и приему запросов к серверу/от сервера.
вот простой примерчик
Код

function createHttpRequest() {
var httpRequest;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpRequest = new XMLHttpRequest();
}
return httpRequest;
}
function sendRequest(file, _resultId, getRequestProc) {
resultId = _resultId;
document.getElementById(resultId).innerHTML = 'Подождите, идет загрузка...';
httpRequest.open('get', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.send(null);
}
function getRequest() {
if (httpRequest.readyState == 4) {
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}

var httpRequest = createHttpRequest();
var resultId = '';
function sendSearchRequest() {
t=result_input();
sendRequest('get_shema.php?shema=' + t,  'resultId',  getRequest);
}


вызов:
Код

sendSearchRequest();


php-файл(в случае примера -- get_shema.php), может делать все что угодно, в том числе обращаться к MYSQL. Все что он вернет, в браузере выложиться в div resultId


--------------------
        
PM MAIL ICQ   Вверх
tikitiki
Дата 7.5.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 10.5.2005

Репутация: нет
Всего: нет



Grig, спасибо большое. Понятно почти всё. Я вижу, что на самом деле можно пробовать применить ajax. Только вот здесь не совсем ясно.
Цитата(Grig @  7.5.2008,  08:49 Найти цитируемый пост)
Все что он вернет, в браузере выложиться в div resultId 

Ты имел ввиду наверно, что результат выложится в var resultId? Если нет, то поясни, что за div и что с ним делать.  smile 



--------------------
PM   Вверх
Atlete
Дата 8.5.2008, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



результат работы скрипта можно вывести в <div>
это выглядет примерно так 
Код

...
<div id="some_result"></div>
...


Код

...
//resultId имеет значение равное 'some_result'
document.getElementById(resultId).innerHTML = httpRequest.responseText;
...

в резульате на странице HTML это будет выглядеть так:
 в том месте где стоит <div> у тебя будет выведен например какой нить текст.

Чтобы увидеть как все это работает 
воспользуйся примером
а в файле get_shema.php напиши следующий код

Код

echo "Hello world<br/>";
print_r($_GET);


"Лучше один раз увидеть чем сто раз услышать" (с) - народная мудрость.
PM MAIL ICQ   Вверх
bars80080
Дата 8.5.2008, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



здесь уже код написан так, что предполагается наличие у тебя на странице элемента (не важно див или другой блок) с id="ResultId"
Код
sendRequest('get_shema.php?shema=' + t,  'resultId',  getRequest);
, если нужно поменять, то в этой строчке можно вставить другой id.
а если нужно обработать приходящие данные, то достаточно убрать 20-ую строчку, и заместо неё вставить обработку
PM MAIL WWW   Вверх
tikitiki
Дата 8.5.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 10.5.2005

Репутация: нет
Всего: нет



Уже понятней.
Цитата(Atlete @  8.5.2008,  14:06 Найти цитируемый пост)
...
//resultId имеет значение равное 'some_result'
document.getElementById(resultId).innerHTML = httpRequest.responseText;
...

Вот здесь под resultId в комментарии имеется ввиду скорее id html-элемента.
Если так, то всё ясно. Только зачем вот здесь в 25 строке программы 
Цитата(Grig @  7.5.2008,  08:49 Найти цитируемый пост)
var resultId = '';

стоит var resultId? Видимо в неё просто подставляем значение id html-элемента, чтоб
потом можно в функции getRequest, например, из того же кода по getElementById обратиться к данному элементу?


--------------------
PM   Вверх
Ghirik
Дата 9.5.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Да простят меня модераторы! (просто я на эту штуку показыва раз пятьдесят... в этом форуме..)

Заметно (не вооруженным глазом), что Вам tikitiki, практически ни чего и не надо...
Просто скрытый фрейм... и всё.. кто-то ошибочно посчитал, что времена фреймов проши, видимо по незнанию. Но, лет десять они будут работать...

http://door-to.ru/LamerPhotoBlog/scripts/G...ough_iframe.htm

Вот здесь http://forum.vingrad.ru/forum/topic-193742...y1404359/0.html примеры php-файлов.

Это сообщение отредактировал(а) Ghirik - 9.5.2008, 12:30


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
tikitiki
Дата 9.5.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 10.5.2005

Репутация: нет
Всего: нет



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



--------------------
PM   Вверх
Fortop
Дата 9.5.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



tikitiki, абсолютно не трудоемко. Надо просто правильно построить архитектуру приложения.
Поскольку у тебя уже есть готовый код, вычлени для себя, те небольшие части, которые ты хочешь перенести на ajax. Например, новостную ленту или еще что-то.

И по частям - переводи smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
solenko
Дата 10.5.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Меня, признаться, удивляют заявления о нетрудоемкости.
Вам всего-то нужно:
1. Навесить элемент, который будут использовать ajax, обработчики
2. Продубировать view в формате JSON/XML/HTML_но_без_лишнего/ваш_вариант
3. Возможно поменять верску для того чтобы было куда вставлять ответы и это было удобно.

Вот умножте эти три пункта на количество use case и получите трудоемкость.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 10.5.2008, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



solenko, 
Цитата(solenko @  10.5.2008,  11:16 Найти цитируемый пост)
2. Продубировать view в формате JSON/XML/HTML_но_без_лишнего/ваш_вариант

Ты чего?

Вообще-то ты должен был разбить свое представление на блоки еще на этапе создания приложения без AJAX.

В случае с переводом на AJAX ты всего лишь будешь использовать отдельные блоки, и не более того. Зачем дублировать?
В большинстве случаев JSON вообще нужен, а будешь использовать XML или HTML  в зависимости от того, какой формат является базовым. Чаще это HTML.

Вот если ты криво проектировал свое приложение, тогда да - геморроя не оберешься.
Но тут уж извиняйте, сами выиноваты.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
solenko
Дата 10.5.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Fortop, почему-то html в моих задачах составляет 5% а остальные 95% -- JSON/XML (это уже дело вкуса).

Банальный пример -- добавление товара в корзину. Без ajax -- редирект на referer и там уже загрузка обновленного блока корзины. ajax -- ответ в неважно каком формате, содержащий новую сумму и количество и, возможно, намиенование товара. 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 10.5.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



solenko, а без AJAX у тебя это как происходило?
Разве не точно также?

Добавлено через 1 минуту и 55 секунд
Эм, был невнимателен.

Кто тебе мешает использовать в AJAX  такой же редирект?
Считай что корзину ты подключаешь как iframe. Роль JavaScript - в этом случае минимальна. Просто сменить урл у соответствующего фрейма


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
solenko
Дата 10.5.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Fortop, читайте сообщение выше. Там есть упоминание того как это происходило без ajax 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 10.5.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(solenko @  10.5.2008,  14:13 Найти цитируемый пост)
Fortop, почему-то html в моих задачах составляет 5% а остальные 95% -- JSON/XML (это уже дело вкуса).

О, и такой вопрос - XSLT ты делаешь уже на стороне клиента?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
solenko
Дата 10.5.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Fortop, вы никогда не задумывались, что не все проекты ориентированы на использование X технологий и могут использовать нечто отличное от XSLT в качестве view?

Добавлено через 6 минут и 11 секунд
Цитата(Fortop @  10.5.2008,  13:24 Найти цитируемый пост)
Кто тебе мешает использовать в AJAX  такой же редирект?Считай что корзину ты подключаешь как iframe. Роль JavaScript - в этом случае минимальна. Просто сменить урл у соответствующего фрейма


1. Использовать iframe не позволяет, наверное, религия
2. Даже если использовать, зачем мне на местен корзины полная страница описания товара? Или вы предлагаете после редиректа в акшине просмотра товара анализировать хедеры и, если это таки xmlhttp отдавать только корзину а не страницу полностью? 



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 10.5.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



solenko, С удовольствием послушаю примеры архитектуры smile но в другой теме smile Если создам в разделе PHP->общие вопросы, устроит?

Цитата(solenko @  10.5.2008,  14:13 Найти цитируемый пост)
Fortop, почему-то html в моих задачах составляет 5% а остальные 95% -- JSON/XML (это уже дело вкуса).


Цитата(solenko @  10.5.2008,  14:33 Найти цитируемый пост)
Fortop, вы никогда не задумывались, что не все проекты ориентированы на использование X технологий

P.S. какой смысл в этих двух фразах тогда? smile Почему не получать готовый HTML и не выводить его без танцев с бубнами?
JSON - может пригодиться для вывода небольшой порции данных.

Добавлено через 8 минут и 9 секунд
solenko, 
Цитата(solenko @  10.5.2008,  14:33 Найти цитируемый пост)
2. Даже если использовать, зачем мне на местен корзины полная страница описания товара? Или вы предлагаете после редиректа в акшине просмотра товара анализировать хедеры и, если это таки xmlhttp отдавать только корзину а не страницу полностью? 

Я предлагаю разделить view - на блоки.
И в данном конкретном случае использовать только блок корзины, а не всей страницы. 

Подобный вопрос, поднимался тут
Почему мне и было бы интересно послушать о вариантах архитектуры приложения.
Да, думаю, и не только мне.

Добавлено через 11 минут и 18 секунд
Например

вся старница
http://shop/catalog/video/view/full

только корзина
http://shop/catalog/video/view/basket



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
tikitiki
Дата 10.5.2008, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 10.5.2005

Репутация: нет
Всего: нет



Спасибо всем за полезную информацию. Вопрос закрыт.


--------------------
PM   Вверх
solenko
Дата 10.5.2008, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Т.к. отдельной темы не нашел, то продолжаем оффтоп тут (а вообще устроит в любой ветке) )

Цитата(Fortop @  10.5.2008,  13:46 Найти цитируемый пост)
P.S. какой смысл в этих двух фразах тогда?

Смысл в кусочке "дело вкуса". После применения моего вкуса получается JSON. 
Цитата(Fortop @  10.5.2008,  13:46 Найти цитируемый пост)
Почему не получать готовый HTML и не выводить его без танцев с бубнами?JSON - может пригодиться для вывода небольшой порции данных.

Обновление блока корзины это большая порция данных? Представьте себе, если бы тот же gmail обновлял при каждом запросе новых писем весь блок сообщений. Лично мне бы такое не понравилось. В случае обновления корзины ответ будет выглядеть как:
Код

{state: success,
  data: {
     sum: 1000,
     quantity: 5
  },
  message: "Товар добавлен в корзину"
}


Цитата(Fortop @  10.5.2008,  13:46 Найти цитируемый пост)
 предлагаю разделить view - на блоки.И в данном конкретном случае использовать только блок корзины, а не всей страницы. 

Он и так разделен. Вот только, как я уже писал, в случае plain html у акшина, обрабатывающего добавление в корзину, нет view в принципе, то, в случае axaj, нужно отдавать хоть что-то, т.е. этот view создать.

Цитата(Fortop @  10.5.2008,  13:46 Найти цитируемый пост)

Напримервся старница
http://shop/catalog/video/view/full
только корзина
http://shop/catalog/video/view/basket

Ну и? ДО этого был только полный просмотр. И как теперь отдавать другой? Длеать отдельный action? Анализировать в action/view параметр и отдавать кусок? Я же и не говорил что нужно будет переверстать все по-другому. Речь как раз о том, что прийдется отдавать не страницу полностью, а только какой-то кусочек (формат абсолютно не важен). 

Попутно предлагаю решить задачку с предлагаемым вами обменом кусками html )
У пользователя отвалилась сессия. Стандартная реакция -- редирект на форму логина. А как быть если в ответ от сервера ждем кусочек html?


Это сообщение отредактировал(а) solenko - 10.5.2008, 23:54


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 11.5.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



solenko, 
я создал отдельную тему http://forum.vingrad.ru/index.php?showtopi...t&p=1508110

Поскольку дискуссия имеет как бы две части. AJAX-реализация и шаблоны. Но все они на мой взгляд завязаны именно на правильную организацию внутренней структуры приложения.

Очень хотелось бы услышать мнения на этот счет.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0934 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.