Новости Joomla

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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Столкнулся с непонятным...

реализую AJAX запрос из модуля в модуль. Создал метод getCountAjax() в хелпере модуля

Код
public static function getCountAjax(){
        try
        {
            $input = JFactory::getApplication()->input;
            $p = $input->get('p');
            $array['msg'] = $p;
            $answer = new JResponseJson($array);
            echo $answer;
        }
        catch(Exception $e)
        {
            echo new JResponseJson($e);
        }
}

Даю в браузере
  • option=com_ajax&module=hzfilter&method=getCount&p=qqq&format=raw
    получаю ответ: {"success":true,"message":null,"messages":null,"data":{"msg":"qqq"}}
  • option=com_ajax&module=hzfilter&method=getCount&p=qqq&format=json
    Получаю две строки: {"success":true,"message":null,"messages":null,"data":{"msg":"qqq"}}{"success":true,"message":null,"messages":null,"data":null}

Разве это правильно? Видимо com_ajax еще сам чего-то генерит... Может надо куда-то передать в com_ajax данные?
*

sivers

  • Живу я здесь
  • 2594
  • 360 / 0
Попробуйте в конце вашей функции добавить return $array;
Либо echo $answer; замените на exit($answer);
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
@platonische
Если в try то так
Код
try
{
// Выполняем код

// если ошибка делаем выброс в catch

throw new Exception($e->getMessage(), 404);
}
catch(Exception $e)
{
throw new Exception($e->getMessage(), 404);
}

// возвращаем резульдат который пойдет в data
return object/array/string

Но вприципе в com_ajax не нужен try просто делаете выброс (throw) и он его поймает

Фактически com_ajax сделан так. ловим ошибки и выводим return в нужном формате.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
exit($answer);
Вот это заработало. Вопрос конечно почему без этого не работает? Читал статьи cmscafe об AJAX и JResponseJson - все вроде оно же.

Вопрос впрочем закрыт, просто хотелось показать поведение такого решения.
Но вприципе в com_ajax не нужен try просто делаете выброс (throw) и он его поймает
Фактически com_ajax сделан так. ловим ошибки и выводим return в нужном формате.
Спасибо!
*

sivers

  • Живу я здесь
  • 2594
  • 360 / 0
Вот это заработало. Вопрос конечно почему без этого не работает? Читал статьи cmscafe об AJAX и JResponseJson - все вроде оно же.

Проверьте вариант с return. Возможно, в случае format=json в качестве результата для json используется используется результат работы функции. Вы же ничего не возвращаете, поэтому он пустой. А задваивалось, потому что сперва отрабатывало echo. Сейчас exit выбрасывает вручную сформированный жсон и прерывает дальнейшее выполнение. Поэтому задвоения никакого не происходит.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Проверьте вариант с return. Возможно, в случае format=json в качестве результата для json используется используется результат работы функции. Вы же ничего не возвращаете, поэтому он пустой. А задваивалось, потому что сперва отрабатывало echo. Сейчас exit выбрасывает вручную сформированный жсон и прерывает дальнейшее выполнение. Поэтому задвоения никакого не происходит.
Да return делает нечто лучшее, но не рабочее на 100%. Приведу вывод (он немного уже изменен, но думаю будет понятен)
Код
{"success":true,"message":null,"messages":null,"data":{"success":true,"message":null,"messages":null,"data":2947}}
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
ТС, смотрите код com_ajax - вы же свой компонент пишете, значит, умеете код читать.
Вы вызываете JResponseJson дважды, а в начале - еще и echo, тоже 2 раза.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

sivers

  • Живу я здесь
  • 2594
  • 360 / 0
А вы делаете return $array; или return $answer; ? )
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
А вы делаете return $array; или return $answer; ? )
Да оно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

com_ajax использование модуля

Автор Wertos

Ответов: 32
Просмотров: 5789
Последний ответ 24.11.2019, 18:33:57
от CB9T
Странное поведение после подключения JHTML::_('behavior.modal')

Автор borro

Ответов: 7
Просмотров: 1231
Последний ответ 05.10.2017, 15:07:14
от dmitry_stas
com_ajax передача данных из формы POST

Автор ChervonStudio

Ответов: 27
Просмотров: 4221
Последний ответ 12.06.2017, 18:09:24
от ProtectYourSite
Режутся некоторые символы при передаче через com_ajax в er. Как передать в него JSON или email?

Автор smokepeng

Ответов: 8
Просмотров: 1696
Последний ответ 01.02.2015, 23:08:16
от Fedor Vlasenko