0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 4038 Просмотров
*

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
Возникла надобность выполнить ajax-запрос. В общем-то любым способом, который потребует наименьших усилий.
Попалась вот такая статья: http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/ajax-v-joomla-3-2.html

Там описывается, как можно посылать ajax-запросы в модули и плагины, используя компонент com_ajax.
Я решил поместить обработчик запроса в плагине, так как создавать для этого модуль совсем нелогично.
Честно говоря, я решил пока не создавать новый плагин, а использовать один из уже установленных.
Я выбрал плагин recaptcha и следовал инструкциям из приведенной статьи.

В файле recaptcha.php я создал метод onAjaxRecaptcha
Цитировать
   public function onAjaxRecaptcha() {
      $input = JFactory::getApplication()->input;
      $text = $input->getString("text");
      $log = fopen('ajaxlog.txt', 'a+');
      fwrite($log, 'ajax AJAX '.$text);
      fclose($log);
      echo $text;
   }

Запрос отправляю так
Цитировать
   $('#order_submit').click(function() {
      $.post( "index.php?option=com_ajax&plugin=recaptcha&format=raw&text=proizvolnij_text", function(data) {
         alert(data);
      });
   });

В свой обработчик я не попадаю, что видно хотя бы по тому, что не создался файл ajaxlog.txt, ну и alert выдает пустое окошко.
Использую Joomla 3.4.

Еще одна деталь.  Автор статьи пишет: "Важно! - при запросе в плагины, будут использоваться только те плагины которые находятся в группе AJAX!".
А какие плагины находятся в группе AJAX?
*

beliyadm

  • Легенда
  • 9758
  • 1664 / 66
  • Севастополь, Россия
А смысл?
У вас уже есть компонент com_ajax
В нем создаете функцию и к ней обращаетесь
К примеру файл \components\com_ajax\ajax.php выглядит так

Код: php
$Itemid	= JRequest::getInt( 'Itemid', 1, 'get' );
$task = JRequest::getVar( 'task', 1, 'get' );
switch ($task)
{
 case 'mytask':
 mytask();
 break;
}

function mytask()
{
echo 'mytask';
}

В своем js обработчике с фронта вызываете эту функцию (понятно, что это я выдрал из обработки формы, но суть думаю ясна)
Код: javascript
$('#block').on('click', ".button", function(){
$.ajax({
           type: 'POST',
               url: '/index.php?option=com_ajax&format=raw&task=mytask',
               target: '',
               data: form_data,
               cache: false,
success: function(response){
$('#success').text(response);
}
});
});

В итоге у вас в блоге с id=success появится текст "mytask"

Либо можно сделать свой файл обработчик (вместо компонента), в котором подгружать ядро и пользоваться стандартными опциями движка в плане API, если так интересно - тоже покажу пример
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
Да, так конечно лучше будет.

У меня получается сейчас отправить запрос в AJAX.php, но не получается, судя по всему, принять там параметры.

Вот мой код
Цитировать
$task   = JRequest::getVar( 'task', 1, 'get' );
//$input = JFactory::getApplication()->input;
//$task = $input->getString('task , 0);

switch ($task)
{
   case 'order' :
      $log = fopen('ajaxlog.txt', 'a+');
      fwrite($log, 'ajax  '.$text);
      fclose($log);
      $txt   = JRequest::getVar( 'txt', 1, 'get' );
      orderMail($txt);
      
      break;
}

Так отправляю запрос
Цитировать
   $('#order_submit').click(function() {
      $.ajax({
              type: 'POST',
               url: '/Joomla/index.php?option=com_ajax&format=raw&task=order',
               data: {txt: 'proizvolnijtext'},
            success: function(response){
               alert(response);
            }
      });
   });

В case 'order' я не попадаю. В AJAX.php запрос приходит, что видно хотя бы потому, что если сделать в нем ошибку, она возвращается алертом.

*

eugenex

  • Захожу иногда
  • 51
  • 0 / 0
А все получилось, просто нужно было "amp;" из URL убрать.  Наверное, это форум так "отформатировал".
« Последнее редактирование: 12.06.2015, 23:59:40 от eugenex »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

ajax загрузка компонента на странице материала К2

Автор Divn

Ответов: 0
Просмотров: 524
Последний ответ 13.01.2023, 15:05:52
от Divn
При срабатывании ajax появляетсся div id="system-message-container"

Автор androv77

Ответов: 1
Просмотров: 463
Последний ответ 17.11.2022, 11:50:42
от androv77
Ошибка при установке компонента

Автор JackThaCat

Ответов: 6
Просмотров: 1470
Последний ответ 11.11.2022, 06:04:13
от Satelitte
Привязка материала к метке через запрос к БД

Автор sk8work

Ответов: 4
Просмотров: 509
Последний ответ 14.10.2022, 13:24:55
от sk8work
Не работает плагин перенаправления (Redirect) Joomla 3.10

Автор tsolomon

Ответов: 10
Просмотров: 968
Последний ответ 23.09.2022, 10:37:20
от sivers