Антон

Антон

pointer.pro
+71
Репутация
534
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 12 декабря 2015 в 19:06

при определенном хидере (например фулаякс) отдавать json данных:

Fuze
О это вообще полезная вещь будет.

Хотя честно сказать проблемы так и не понял, вернее не считаю это проблемой

Fuze
Дело в том что я впервые сталкиваюсь, чтобы движок что-то резал при аякс-запросе. И поэтому мне данный момент создал неудобства. Но не считаю это проблемой, проблема была бы, если вообще нельзя было аякс использовать laugh

Ладно всем спасибо, тему закрываю.

Попробую данное решение:

да нет. можно например при аякс запросе не выводить "голову страницы". т.е. достаточно в хидере отдавать какой то еще заголовок (массив заголовков вместе с обнулением X-Requested-With) и этот заголовок потом проверять в методе head класса шаблонизатора.

Fuze
#2 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 12 декабря 2015 в 14:14
По поводу моих наездов — прошу прощения, кого зацепил. Но про работу и предназначение технологий я в курсе. И мне не понравилось тыкание носом меня в матчасть, не разобравшись в проблеме.
Про то, что аякс-подгрузку в идеале надо использовать для получения конкретных данных, я в курсе.
То, что мне нужно реализовать получение всей страницы, поняли только Fuze и maxisoft, и при этом они не пытались меня "научить теории". Причем активные тыкатели в теорию оказывается не так и хорошо ее знают… (давайте только без слез и истерик)

а вот +" #content_ajax" — вызывает.

Val
Данный момент меня достаточно удивил при Вашей осведомленности в теории.
api.jquery.com/load/ Читаем блок "Loading Page Fragments"

Так и делайте аякс запрос на эту страницу?! Вернется страница, далее разбираете ее по якорям и вставляете нужную часть куда вам надо.

Val
Вы видимо не прочитали мое начальное сообщение в данном топике. Повторяю: движок не отдает при аяксе всю страницу.

P.S. и зря вы на Странник'а наезжаете — это вас совершенно не красит, тем более учитывая что он вам несколько раз указал куда надо смотреть.

Val
Странник, не разобравшись в ситуации, начал выказывать эмоции. Я не считаю, что его это красит. В сообществе профессионалов эмоции нужно держать при себе.

вчера решил для себя аналогичную задачу

iasphix
Спасибо за участие. Но именно с обработкой СВОЕГО php-файла и использованием результата проблем нет. Я не могу тупо релоадить всю страницу аяксом.

Топик стартер желает по аякс получить страницу целиком. По существу вопроса ему предложены решения.

Fuze
Наконец-то меня услышали danceЯ понял, что что-то подкрутить в движке проблематично, по крайней решения предложено не было. По поводу разных вариантов с аяксом понял. Всем спасибо.
#3 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 15:30
Странник Вы сейчас начинаете холивар. Зачем? Вы сочли мы слова лично — обиделись, разозлились или какие там у Вас эмоции?
Отлично, забейте, пройдите мимо. Зачем Вы заходите и льете воду? Не тратьте свое время и мое.

Мои слова про демагогию Val воспринял адекватно. И продолжил обсуждение, что показывает адекватность и здравомыслие данного человека.
Если слово "демагог" зацепило Вас, то видимо в Вашем случае я попал в точку (видимо на рану соль насыпал).

Представьте, не должен. Никто.

Странник
Разве хотя бы в 1 моем сообщении было упоминание, что мне кто-то что-то должен? Опять у Вас эмоции. А на аватарке вроде взрослый серьезный мужик…
#4 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 14:24
В callback было написано много кода. Я удалил его, чтоб не смущать hohoа получилось наоборот. Про current_url даже не подумал, что вызовет вопрос. Просто переменная, которая генерится ранее.

Сейчас объясню подробнее назначение.

InstantCMS 2. Компонент "контент". Все махинации происходят на странице записи.

Есть необходимость смены категории нажатием на 1 кнопку (категория — это статус записи).
На странице выводится селект со списком категорий и кнопка "изменить".
Это реализовано аяксом, идет пост к php-файлу, который меняет категорию записи. Все просто, все работает.

Теперь пользователю нужно обновить информацию на странице без всяких перезагрузок страницы.
Применение и обработка информации, полученной при работе предыдущего запроса не подходит, т.к. меняется при смене категории многое — от хлебных крошек и содержимого записи до информации в сайдбаре.
В итоге мне нужно тупо обновить страницу уже имеющуся, но без морганий, свойственных перезагрузке страницы.

Поэтому я делаю load этой же страницы. При этом запросе сервер получает XMLHttpRequest (и ядро его обрабатывает иначе, чем простой запрос) и в ответ приходит только содержимое контентной части.
#5 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 13:02
В сухом остатке советов по делу нет scratch
#6 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 13:00

Вот ваша ошибка.

Странник
Предполагаю Вы подразумеваете более правильным использование ajax для обращения к php скрипту, который генерит непосредственно нужный кусок кода для вывода в нужном месте. Да это круто, только не всегда подходит.

Когда мне нужно обновить тупо всю страницу кроме шапки, не писать же php-скрипт генерации той же страницы только без шапки.
#7 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 11:21

Позвольте мне уточнить. ГДЕ расположена страница "донор"?

Странник
Так я ж привел в пример интернет-магазин.
Донор — это страница товара на этом же сайте.

И еще. Val вам старается помочь. Если будете обвинять помощников в холливаре — помощников у вас очень быстро не останется. Компрене ву?

Странник
instantcms.ru/novosti/release230.html#comment_86604
Обратите внимание на мой вопрос и ответ Fuze. Без демагогий на тему использования понятий человек дал мне конкретный совет (правда выше я описал чем он меня не устроил).

Повторюсь проблема не в скрипте и не jquery load, а в том что для своих целей (насколько я понимаю для оптимизации быстродействия) движок режет ajax-запросы.

Решение с подменой Headers не подошло, либо я неверно его использовал.

Поэтому прошу помочь людей знакомых с работой ядра. Либо указать на неправильную подмену Headers.
#8 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 10:57

Вы описали callback функцию успешного получения данных от сервера, в которой эти данные вставили в соответствующие элементы))) Т.е. результат действительно выглядит как будто мы перезагрузили часть страницы, но по факту аяксом мы только получили данные, а уже как мы распорядились ими — к технологии не относится (могли просто добавить их к существующим элементам, могли заменить существующие элементы, могли частично обновить элементы и еще много чего могли сделать)

Val
Насколько я понял у Val страсть к демагогии: "Давайте выучим какой-нибудь термин и будем холиварить по поводу сути данного термина".
Нужно решение проблемы, а не обсуждение технологии.
Суть проблемы в том, что не работает стандартный jquery load, который загружает нужный мне блок со страницы донора в нужный блок на страницу цели.

И самое главное — данная штука зарезается движком.

Так вот: кто знаком с ядром движка и логикой обработки аякс-запросов движком — подскажите как обойти эту проблему.
#9 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 11 декабря 2015 в 10:45
Например, poplavok.market/magazin/primanki/blesny/blesna-vertikalnaja-zimnjaja-s-vpajan-kr-vmc-gvozdik-bol-02-1g-4c.html
При выборе цвета, меняется содержимое #shop_item_details.
Пояснение: "цвета" — это варианты товара, выполненные как товары (связанные между собой кодом). При выборе цвета подгружается информация для нужного варианта. Здесь перезагружается аяксом часть страницы. Этот сайт выполнен на 1 инстанте.

То же самое не работает на 2-м.

Val, смущать Вас эта функция не должна. Она работает. Я всего лишь привел функции jquery load.
#1 [ЕСТЬ РЕШЕНИЕ] Проблема с AJAX'ом Instant CMS 2 10 декабря 2015 в 22:06
Всем привет!

Instant CMS 2.3.0

Столкнулся с проблемой аяксовой перезагрузки страницы.

Например, мне нужно перезагрузить часть страницы:
  1. $('#content_ajax').load(current_url+" #content_ajax", function(){});
Не работает.

В ядре нарыл код:
  1. private function detectContext(){
  2.  
  3. if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
  4. $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
  5. return cmsRequest::CTX_AJAX;
  6. } else {
  7. return cmsRequest::CTX_STANDARD;
  8. }
  9. }
И понял, что для ajax-запросов идет своя обработка. Но мне бы при своих запросах обходить это.
По совету Fuze попробовал load заменить на ajax и подменить headers, чтоб не передавать XMLHttpRequest.

  1.  
  2. $.ajax({
  3. type: 'POST',
  4. url: current_url+" #content_ajax",
  5. headers: {
  6. "X-Requested-With":"NULL"
  7. }
  8. }).done(function(data) {
  9. $('#content_ajax').html(data);
  10. });
Работает. Но в консоли вижу, что заново все скрипты подгружаются при load'е. Не есть гуд.

Пока обошелся тем, что в ядре в template.php в функции processRender добавил код:
  1. if (substr_count($tpl_file, 'item_view.tpl') || substr_count($tpl_file, 'sales_item.tpl') || substr_count($tpl_file, 'projects_item.tpl') || substr_count($tpl_file, 'default_item.tpl')) {
  2. $this->addOutput( $html );
  3. return $html;
  4. }
Но не считаю это элегантным решением.

Какие есть еще варианты?
#11 [ЕСТЬ РЕШЕНИЕ] Виджет формы обратной связи (для скачивания) 20 августа 2014 в 10:19
Создана запись в блоге:
Форма обратной связи

Вопросы задавайте там.
#12 [ЕСТЬ РЕШЕНИЕ] Автоподгрузка страниц iCMS2 19 августа 2014 в 21:48
Val в первую очередь текущую перенеси в блог. Не все форумы читают.
#13 Страница 404 ошибки в дизайне сайта 19 августа 2014 в 16:59
Да я в курсе, что это чистый php😥Уже погуглил
Предполагаю, что с настройками сервера что-то не так.
Покопаю на днях.
#14 [ЕСТЬ РЕШЕНИЕ] Виджет формы обратной связи (для скачивания) 19 августа 2014 в 16:54
Все настройки в самом виджете.

Добавил в тему блок "update" — там описана возможная проблема.
#15 Страница 404 ошибки в дизайне сайта 19 августа 2014 в 16:28
Хм не работает эта функция у меня scratch
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.