Про библиотеку JsHttpRequest.js

#
Про библиотеку JsHttpRequest.js
Вопрос такой, хотелось бы чтобы контент сайта подгружался с помощью Ajax какие API системы для этого следует использовать?
Модератор
#
Re: Про библиотеку JsHttpRequest.js
script88,
API системы фактически не будет использоваться. Реализуете JS-функции, которые будут отправлять запрос на Back-end и как пришел ответ - что-то делать.

Для начала рекомендую ознакомиться с функцией AddIntoCart(), она расположена в файле /templates/template/hostcms.js

Она весьма простая - отправляется запрос на back-end, там создается ответ, при поступлении ответа вызывается функция callbackfunction_AddIntoCart() (имя функци естественно можете менять), которая берет результат и пишет в div.
По большому счету все очень просто.

Вот пример обработчика на стороне PHP (он должен быть именно в настройках динамической страницы):
/* AJAX добавление товара в корзину */
if (isset($_GET['ajax_add_item_id'])) // ajax_add_item_id замените на нужное значение
{
   // Выполняем какие-то действия, которые нужны нам
   // ...


   // Отображаем корзину
   $JsHttpRequest = new JsHttpRequest(SITE_CODING);

   ob_start();
   // Здесь делаем вывод того, что нужно отобразить в клиентской части
   $html = ob_get_clean();
   
   // Вместо cart указываете нужно значение, в JS потом будете получать
   $GLOBALS['_RESULT'] = array('cart' => $html);

   echo $JsHttpRequest->LOADER;
   exit();
}


Вместо cart пишите нужное значение (возвращаемыэ элементов может быть больше), например:

$GLOBALS['_RESULT'] = array('myvalue' => $html, 'myxyz' => $html_2);

фрагмент пример обработки в JS
      // Данные.
      if (typeof responseJS.myvalue != 'undefined')
      {
         html = responseJS.myvalue;
#
Re: Про библиотеку JsHttpRequest.js
HostCMS,
спасибо за развернутось, тоесть если мне нужно вывести новости на страницу, как это реализовать...если конечно можете опишите плз....
Модератор
#
Re: Про библиотеку JsHttpRequest.js
script88,
Вы посмотрите те данные, что я привел и попробуйте написать код. Не получится - показывайте Ваши наработки, будем вместе разбираться
#
Re: Про библиотеку JsHttpRequest.js
HostCMS,
приведу пример:
суть задачи такова, чтобы дизайн сайта не перегружался, при переходе на другую страницу в ИС, а перегружалось только шаблоны страниц...
#
Re: Про библиотеку JsHttpRequest.js
HostCMS,

$InformationSystem = new InformationSystem();    
$information_item_id = 1;
if (isset($_GET['information_item_id']))
{
   $result = $InformationSystem->InformationItemIncShowCount($information_item_id);
   $JsHttpRequest = new JsHttpRequest(что Сюда поставить ?);
   ob_start();
   // Здесь делаем вывод того, что нужно отобразить в клиентской части
   $html = ob_get_clean();
   $GLOBALS['_RESULT'] = array('$result' => $html);
   echo $JsHttpRequest->LOADER;
   exit();
}
Модератор
#
Re: Про библиотеку JsHttpRequest.js
script88,
при чем здесь шаблоны страниц?
#
Re: Про библиотеку JsHttpRequest.js
HostCMS,
сильно не критикуйте я просто еще не точно понимаю как это работает ajax в системе...
Модератор
#
Re: Про библиотеку JsHttpRequest.js
script88,
в общем если на пальцах, то нужно делать так:
1. Для ссылок с название элементов в XSL прописать
<a href ... onclick="здесь-ваша-JS-функция" > ...


2. Скопировать полностью код динамчиеской страницы (не настроек) вот сюда:
if (isset($_GET['information_item_id']))
{
   $JsHttpRequest = new JsHttpRequest(SITE_CODING); // SITE_CODING - это определенная системой константа, она всегда определена
   ob_start();
   // Здесь делаем вывод того, что нужно отобразить в клиентской части

   // Вот сюда вставляем код динамчиеской странциы, подставляя в него нужные данные

   $html = ob_get_clean();
   $GLOBALS['_RESULT'] = array('$result' => $html);
   echo $JsHttpRequest->LOADER;
   exit();
}
Модератор
#
Re: Про библиотеку JsHttpRequest.js
script88,
1. на JS отправляется запрос на сервер, при этом запрос отправляется асинхронно, т.е. программа не ждет ответа, а продолжает работать.
2. Когда приходит нужный от сервера ответ - вызывается пользовательская JS-функция обратного вызова, в которой указывается, что с этими данными делать. Например вставить в div и всего делов.

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