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


 




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


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

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