![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| tikitiki |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Ajax начинаю только использовать на практике. Я решил применить ajax для вывода каталога магазина и подобных вещей. Этим уже занимается работающий пхп скрипт. У меня при выводе ссылок каталога каждый раз при кликах по ссылкам страница обновляется. Для того, чтоб не обновлялась и решил ajax применить. Библиотеки не использую. Пришла вроде не плохая мысль. Решил посоветоваться-можно ли так.
1) В общем я решил весь скрипт (о котором выше говорил) использовать в качестве url для запроса серверу. Формирование запроса и объекта запроса я решил повесить на onclick к ссылкам в каталоге. А сам скрипт всё-равно использовать ещё и в обычном своём смысле. 2) При этом скрипт у меня где-то до середины выводит то, что я хотел менять, а дальше тоже выводит html и smarty и из бд данные, но эту часть мне не хочется и не надо менять. Вот эту часть я понял, что можно просто целиком получить в ответе сервера на запрос (запрос ajax) и выдать через print в пхп. 3) Ту часть, что я менять хотел -можно тоже исправить и использовать при этом вывод в пхп ответа сервера. Но с помощью dom я хочу сначала div с ссылками каталога очистить от всех потомков, а потом добавить ответ сервера, в котором будут упорядоченные ссылки в качестве текстового узла этого div. Вот так. Я сейчас подумал-моё решение вроде реально может работать. Ещё раз. В итоге я получаю скрипт пхп свой, у которого до середины выводятся ссылки из каталога (ссылки с товарами), на которые я на onclick повесил запрос к серверу. В url запроса значится скрипт тот же. После этого получу в ответе сервера обновлённые ссылки, которые с помощью dom ставлю в div. Если же ссылка на странице скипта не входит в число ссылок, которые формируют запрос, то произойдёт обычная работа скрипта при клике по ссылке. А за обработку этого клика будет отвечать весь скрипт с начала и до конца(может не весь из-за условий в скрипте), как и было до этого. Мне здесь в первую очередь важна идея, а код уже потом. Понял, что без кода плохо. Вот часть кода из head на js:
В этом коде первая функция вешает обработчики на ссылки каталога. Вторая функция при клике должна удалять потомков из див и добавлять новые ссылки в качестве новых потомков. Я только удаление потомков не успел здесь написать. Понял, что в коде ошибся. В функции clickAhrefs надо как раз организовать создание объекта запроса и самого запроса. А то, что я написал в коде-надо использовать в функции отдельной, чтоб она ответ сервера обрабатывала и она должна вызываться на onreadystatechange. |
|||
|
||||
| tikitiki |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Извиняюсь, ещё ошибся. В последней функции (что в коде) надо не саму ссылку добавлять в div, а ссылки, возвращённые в ответе сервера. Вопрос большой-потому и ошибки. Ответьте хотя бы -похожие решения используют на практике, или какие решения взамен можно использовать? Меня бы и такой ответ устроил, т.е. я не прошу за меня ничего делать.
|
|||
|
||||
| tikitiki |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Отпишусь. Всё, что писал-всё сделал в качестве теста. Но скрипт работает по-старому, т.е. страница обновляется. Что странно. Запрос серверу видимо отправляется, т.к. иначе должен сообщение выдать об ошибке(я включил в код). У меня подозрение большое на
Я его в функции использую для того, чтоб ссылки при кликах не вызывали обновление страницы. А функцию эту вешаю в обработчиках onclick. Может этот код в другое место поставить? Может вот в этом коде можно после onclick добавить? Я не знаю-здесь уместно и функцию и ретурн использовать одновременно?
|
||||
|
|||||
| tikitiki |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Немного полегчало. Видимо правильно всё делаю. С return false сделал как ниже в коде наугад. Но из-за этого ошибки в консоли js в firefox исчезли, как ни странно. Не знаю можно ли так делать. Запрос к серверу скорее всего правильно формируется, т.к. к примеру нижний код вызывает при клике на ссылке сообщение "Request created". Меня сейчас только одно смущает, что сообщения такие не все ссылки нужные вызывают, на которые вешаю обработчики с помощью функции из данного кода. Знающие-помогите.
Ещё странность есть. Местами, где не ожидал-выскакивает ошибка. Опять же при кликах на ссылках. При чём мне довольно не понятно, что это за ошибка. Описание ошибки одно, а ссылается на другое. Ссылается на код ниже.
А описание из консоли js firefox:
|
||||||
|
|||||||
| 12345c |
|
||||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
-------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
||||
|
|||||
| tikitiki |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
12345c, readyState == 4 у меня тоже есть в коде. Здесь просто не указал. Но у меня два отдельных условия.
|
|||
|
||||
| tikitiki |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Почти всё у меня получилось. Снимаю вопрос.
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |