Новости Joomla

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

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Re: Модуль обратной связи AJAX
« Ответ #30 : 28.08.2014, 03:39:12 »
Спойлер
[свернуть]
Работает AJAX? У вас форма по клику по кнопке должна отправляться на action. Отмените действие по умолчанию.

Код: javascript
jQuery(function($) {
    $('#cu-submit').on('click', function (event) {
        event.preventDefault();
        $.ajax({
  type: 'POST',
  url: $('#contact-us').attr('action'),
  data: $('#contact-us').serialize(),
  success: function(server){
      console.log(server);
  },
  error: function(obj, err, excl){
      console.log('Error:  ' + err + ' ' + excl);
  }
        });
    });
});
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #31 : 28.08.2014, 13:25:52 »
А в jQuery.ajax({ }) есть параметр аналогичный success, только для выполнения чего-либо до выполнения getAjax()?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Модуль обратной связи AJAX
« Ответ #32 : 28.08.2014, 14:14:33 »
beforeSend ?

Кстати
Цитировать
Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #33 : 28.08.2014, 14:42:36 »
Да, спс, сам нашел уже, здесь: http://jquery.page2page.ru/index.php5/Ajax-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81

Теперь другой вопрос.
В success показываю сообщение (аналогичное JFactory::getApplication()->enqueueMessage(), просто заранее подготовленный скрытый блок. который делаю видимый), в сообщении button "Закрыть", по нажатии на на которую надо очистить все поля и скрыть форму.
Вся форма - в виде раскрывающегося меню, внутри .open > .dropdown-menu, т.е. по нажатии "Закрыть" надо убрать у итема-родителя (id заранее неизвестен).open.
Есть мысли, как?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Модуль обратной связи AJAX
« Ответ #34 : 28.08.2014, 14:46:52 »
А id дочернего элемента известен? Тогда можно было бы через parent(). Может спецы по JS еще что-то подскажут.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #35 : 28.08.2014, 15:01:40 »
Структура примерно следующая:

<li class="item-116 dropdown open">
    <a data-toggle="dropdown" href="#"></a>
    <ul class="dropdown-menu dropdown-right">
        <form id="contact-us" class="form-vertival" enctype="multipart/form-data" method="post" action="/"></form>
        <script type="text/javascript"></script>

    </ul>
</li>

Выделенное - это сам модуль, нужно по нажатии в модуле кнопки убрать open у li и очистить поля формы.
jquery("#contact-us").parent().parent().removeClass("open"); ?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Модуль обратной связи AJAX
« Ответ #36 : 28.08.2014, 15:21:41 »
или так:
jQuery("#contact-us").parents(".open").removeClass("open");
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #37 : 28.08.2014, 15:27:20 »
Спс
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Re: Модуль обратной связи AJAX
« Ответ #38 : 28.08.2014, 16:27:41 »
быстрее:  jQuery("#contact-us").closest("li").removeClass("open");
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #39 : 28.08.2014, 21:20:32 »
быстрее:  jQuery("#contact-us").closest("li").removeClass("open");
Сделал, работает. Не нашел, что возвращает эта функция: closest()

upd
Нашел:
Цитировать
Получает набор, содержащий ближайшие родительские элементы, которые удовлетворяют указанному селектору, включая начальный элемент.
Сначала, сlosest  смотрит на текущий элемент: удовлетворяет-ли он указанному выражению, если да, то просто возвращается непосредственно сам элемент. Если не удовлетворяет, то будет далее продолжаться просмотр документа, родитель за родителем, до тех пор, пока не будет найден соответствующий указанному выражению элемент. В случае, если ни одного элемента не найдено, то ничего не будет возвращено.
« Последнее редактирование: 28.08.2014, 21:34:55 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Модуль обратной связи AJAX
« Ответ #40 : 28.08.2014, 21:47:12 »
closest банально перемещается от элемента который вызывается по дереву вверх.. пока не найдет тот элемент который указали closest
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #41 : 28.08.2014, 22:09:23 »
А как прикрутить внутри beforeSend валидацию полей, причем только тех, что в форме выведены (в зависимости от параметров модуля)? Смотрю в сторону jquery.validate.js, но не знаю, как его с аяксом подружить.
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Re: Модуль обратной связи AJAX
« Ответ #42 : 28.08.2014, 22:32:53 »
А как прикрутить внутри beforeSend валидацию полей, причем только тех, что в форме выведены (в зависимости от параметров модуля)? Смотрю в сторону jquery.validate.js, но не знаю, как его с аяксом подружить.
А зачем с ним дружить? И beforeSend не надо тут.
Как один из вариантов, вставьте до этого - $.ajax({...
Код
if( !myFunctionValidate() ) {
  return false;
}

и отдельно свою валидацию:
Код
myFunctionValidate() {
  var valid = true;
  // ваш код валидации // если что-то не валидно, то   valid = false;
  return valid;
}
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #43 : 03.09.2014, 23:43:28 »
Решено. Вопрос валидации решен отдельным топиком.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #44 : 06.09.2014, 01:56:01 »
Отдельный вопрос, связанный с этим же модулем:
В хелпере в getAjax() не работает JText::_() и JText::sprintf(), что-то не подключил?
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #45 : 06.09.2014, 02:25:29 »
Код: php
    $body = JText::sprintf('MOD_ORDER_PRESENT_BODY_MSG', $msg).
      "\n\n".JText::sprintf('MOD_ORDER_PRESENT_BODY_ORGTYPE', $orgtype).
      "\n".JText::sprintf('MOD_ORDER_PRESENT_BODY_USERNAME', $username);
    if ((bool)$is_email and ($useremail != '')) $body .= "\n".JText::sprintf('MOD_ORDER_PRESENT_BODY_EMAIL', $useremail);
    if ((bool)$is_skype and ($userskype != '')) $body .= "\n".JText::sprintf('MOD_ORDER_PRESENT_BODY_SKYPE', $userskype);
    if ((bool)$is_phone and ($userphone != '')) $body .= "\n".JText::sprintf('MOD_ORDER_PRESENT_BODY_PHONE', $userphone);
По факту в $body попадает только содержимое $msg. Как исправить?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Модуль обратной связи AJAX
« Ответ #46 : 06.09.2014, 02:28:52 »
Попробуйте загрузить языки нужные
$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, 'en-GB', true);
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, null, true);
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #47 : 06.09.2014, 02:32:18 »
JPATH_ADMINISTRATOR - загрузка файлов из админки? а если с фронт-части нужны?
Что означает null 3 параметром - язык по умолчанию?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Модуль обратной связи AJAX
« Ответ #48 : 06.09.2014, 03:03:42 »
JPATH_SITE из пользовательской части
null - по умолчанию язык будет!
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #49 : 06.09.2014, 03:12:00 »
Код: php
    $language = JFactory::getLanguage();
    $language->load('mod_order_present', JPATH_BASE, null, true);
Язык подключился!

Код: php
    $msg = JText::sprintf('MOD_ORDER_PRESENT_BODY_MSG', $input->getString('msg'));
    $orgtype = JText::sprintf('MOD_ORDER_PRESENT_BODY_ORGTYPE', $input->getString('orgtype'));
    $username = JText::sprintf('MOD_ORDER_PRESENT_BODY_USERNAME', $input->getString('username'));
    if ((bool)$is_email) $useremail = JText::sprintf('MOD_ORDER_PRESENT_BODY_EMAIL', $input->getString('email'));
    if ((bool)$is_skype) $userskype = JText::sprintf('MOD_ORDER_PRESENT_BODY_SKYPE', $input->getString('skype'));
    if ((bool)$is_phone) $userphone = JText::sprintf('MOD_ORDER_PRESENT_BODY_PHONE', $input->getString('phone'));

    $body = $msg."\n\n".$orgtype."\n".$username;
    if ((bool)$is_email) $body .= "\n".$useremail;
    if ((bool)$is_skype) $body .= "\n".$userskype;
    if ((bool)$is_phone) $body .= "\n".$userphone;
в $body попадает только $msg
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Модуль обратной связи AJAX
« Ответ #50 : 06.09.2014, 03:16:25 »
что у вас в строке MOD_ORDER_PRESENT_BODY_MSG ?
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #51 : 06.09.2014, 03:18:02 »
$body = $msg."\n\n".$orgtype."\n".$username; => $body = $msg."\n \n".$orgtype."\n".$username;
поставил пробел между \n после $msg - все ок.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #52 : 06.09.2014, 03:18:59 »
что у вас в строке MOD_ORDER_PRESENT_BODY_MSG ?
Код: ini
MOD_ORDER_PRESENT_SUBJECT="Заказ презентации"
MOD_ORDER_PRESENT_BODY_MSG="Интересующий функционал: %s"
MOD_ORDER_PRESENT_BODY_ORGTYPE="Вид организации: %s"
MOD_ORDER_PRESENT_BODY_USERNAME="Контактное лицо: %s"
MOD_ORDER_PRESENT_BODY_EMAIL="Email: %s"
MOD_ORDER_PRESENT_BODY_SKYPE="Skype: %s"
MOD_ORDER_PRESENT_BODY_PHONE="Телефон: %s"
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #53 : 06.09.2014, 03:22:30 »
А еще var_dump(JFactory::getConfig()->get('config.fromname')); возвращает null, хотя поле "Отправитель письма" заполнено
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #54 : 06.09.2014, 09:02:29 »
Нашел косяк: JFactory::getConfig()->get('config.fromname')ж - это для J1.5, для 2.5 и 3.х JFactory::getConfig()->get('fromname');
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #55 : 07.09.2014, 10:12:40 »
Почему внутри getAjax() не работает var_dump() или print_r()?

Делаю еще один модуль:
Спойлер
[свернуть]
$mail->send(); возвращает false, не пойму, почему; хотя на соседней странице похожий код отрабатывает отлично, сообщение уходит
js отрабатывает нормально.
« Последнее редактирование: 07.09.2014, 10:17:44 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Модуль обратной связи AJAX
« Ответ #56 : 07.09.2014, 11:26:43 »
Почему внутри getAjax() не работает var_dump() или print_r()?
Отлично они там работают.. только не известно как вы получаете данные AJAX

$mail->send(); возвращает false, не пойму, почему; хотя на соседней странице похожий код отрабатывает отлично, сообщение уходит
js отрабатывает нормально.
надо смотреть какие ошибки в print_r($mail)
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #57 : 07.09.2014, 12:53:09 »
    $send = $mail->send();
    print_r($mail);
Ничего не выводит.
Что показать?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Модуль обратной связи AJAX
« Ответ #58 : 07.09.2014, 12:56:02 »
Попробуйте так:
Код: php
$file = fopen( JPATH_SITE . '/log.txt', 'w' );
fwrite( $file, print_r( $mail, true ) );
flush();
fclose( $file );
В корне сайта должен появится файл log.txt смотрите что в нем..
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Модуль обратной связи AJAX
« Ответ #59 : 07.09.2014, 13:04:12 »
В одном из модулей такое было, когда при копировании файлов из модуля в модуль забыл имя класса переименовать, но сейчас вроде все ок: mod_calc_nfo => class ModCalcNfoHelper

Лог появился, в логе есть строчка:
[ErrorInfo] => Необходимо указать хотя бы одного получателя электронной почты.
Код: php
$workemail = $params->get('email');
$mail->addRecipient($workemail);
Походу, либо не считался параметр, либо переменная не записалась. Параметр в модуле заполнен корректно, проверил.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как создать модуль с использованием php?

Автор nartan

Ответов: 23
Просмотров: 3517
Последний ответ 11.08.2017, 10:54:08
от Никoлaй
СЕСИЯ при AJAX запросе к php файлу

Автор avantyrist

Ответов: 15
Просмотров: 2650
Последний ответ 20.12.2015, 14:13:43
от robert
[Решено] Русский язык в AJAX.php

Автор Hishchnik

Ответов: 15
Просмотров: 1889
Последний ответ 10.06.2014, 19:03:34
от Hishchnik
Погода по IP посетителя сайта. Модуль для Joomla 1.5, 2.5, 3.*, 4, 5 и так далее

Автор rishard

Ответов: 11
Просмотров: 4170
Последний ответ 02.05.2014, 20:07:58
от era
AJAX + Joomla

Автор scripter

Ответов: 3
Просмотров: 1111
Последний ответ 28.04.2014, 16:52:57
от Shustry