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

Spell161

  • Новичок
  • 4
  • 0 / 0
ajax + Joomla
« : 23.01.2020, 15:10:04 »
Всем здравствуйте. Сайт у меня на движке Joomla. Хочу добавить функцию обратной связи с использованием AJAX. Готовые модули мне не подходят. Нашел в интернете один пример, меня он устраивает, но не работает, не отправляется письмо. Сообщение "Спасибо за заявку! Скоро мы с вами свяжемся." появляется, но письма нет. В чем проблема?
код:
форма:
Код
	<form id="myForm">
<input type="text" name="name" placeholder="Ваше имя"/><br />
<input type="text" name="phone" placeholder="Ваш телефон"/><br />
<button>Отправить</button>
</form>

ajax:
Код
<script type="text/javascript">
jQuery(document).ready(function($) {
    $("#myForm").submit(function() {
        $.ajax({
            type: "POST",
            url: "mail.php",
            data: $(this).serialize()
        }).done(function() {
            $(this).find("input").val("");
            alert("Спасибо за заявку! Скоро мы с вами свяжемся.");
            $("#myForm").trigger("reset");
        });
        return false;
    });
});
</script>

php файл mail.php:
Код
<?php
mail('pochta@pochta.com', 'My Subject', 'Message');
?>
*

sivers

  • Завсегдатай
  • 1541
  • 213 / 0
Re: ajax + Joomla
« Ответ #1 : 23.01.2020, 15:40:29 »
1) в файл mail.php добавьте какой-нибудь вывод текста (временно), через консоль браузера отследите сетевой запрос аякса и удостоверьтесь, что правильный ответ приходит (т.е. ваш файл действительно вызывается).
2) url: "mail.php" это лучше заменить на url: "/mail.php", если файл лежит в корне
3) на большинстве хостингов сейчас пхп-функция mail() не работает, скорее всего вы нашли устаревший пример. используйте phpMailer с авторизацией smtp или другую библиотеку с авторизацией. Либо (что лучше всего) подключайте в файле фреймворк Joomla и делайте отправку почты средствами Joomla JFactory::getMailer().
На связи в телеге @sivers
*

Spell161

  • Новичок
  • 4
  • 0 / 0
Re: ajax + Joomla
« Ответ #2 : 23.01.2020, 18:02:10 »
1) в файл mail.php добавьте какой-нибудь вывод текста (временно), через консоль браузера отследите сетевой запрос аякса и удостоверьтесь, что правильный ответ приходит (т.е. ваш файл действительно вызывается).
2) url: "mail.php" это лучше заменить на url: "/mail.php", если файл лежит в корне
3) на большинстве хостингов сейчас пхп-функция mail() не работает, скорее всего вы нашли устаревший пример. используйте phpMailer с авторизацией smtp или другую библиотеку с авторизацией. Либо (что лучше всего) подключайте в файле фреймворк Joomla и делайте отправку почты средствами Joomla JFactory::getMailer().

Спасибо, за совет, попробовал 1 пункт:
Цитировать
1) в файл mail.php добавьте какой-нибудь вывод текста (временно), через консоль браузера отследите сетевой запрос аякса и удостоверьтесь, что правильный ответ приходит (т.е. ваш файл действительно вызывается).
добавил эти строчки:
Код
<script>
console.log( "текст");
</script>
Не выводит в консоль, при обращении напрямую к файлу mail.php через адресную строку выводит в консоль

Остальные пункты пока не пробовал, позже попробую, отпишусь.
Еще один факт, если это все файлы закинуть в отдельный каталог и вызывать через файл index, грубо говоря без Joomla, то все работает, хостинг поддерживает.
*

draff

  • Гуру
  • 5072
  • 353 / 7
  • ищу работу
Re: ajax + Joomla
« Ответ #3 : 23.01.2020, 18:48:51 »
добавил эти строчки:
Лучше код PHP
Код
var_dump($_POST);
*

sivers

  • Завсегдатай
  • 1541
  • 213 / 0
Re: ajax + Joomla
« Ответ #4 : 23.01.2020, 20:51:10 »
Еще один факт, если это все файлы закинуть в отдельный каталог и вызывать через файл index, грубо говоря без Joomla, то все работает, хостинг поддерживает.
И почта приходит? В таком случай попробуйте просто п.2 сделать (добавить слеш).
На связи в телеге @sivers
*

Spell161

  • Новичок
  • 4
  • 0 / 0
Re: ajax + Joomla
« Ответ #5 : 23.01.2020, 21:22:59 »
И почта приходит? В таком случай попробуйте просто п.2 сделать (добавить слеш).
чудо, действительно помог второй пункт, спасибо. Но и пришлось файл "mail.php" положить в корень сайта, только так письмо пришло, странно. Спасибо большое за помощь, я 2 дня голову ломал с этим ajax))
*

sivers

  • Завсегдатай
  • 1541
  • 213 / 0
Re: ajax + Joomla
« Ответ #6 : 23.01.2020, 23:02:11 »
только так письмо пришло, странно.
Не странно. Когда вы ставите слеш в начало ссылки, это означает, что указываете путь от корня. Поэтому пришлось положить файл в корень и написать /mail.php. А можно было оставить его в вашей папке и указать путь для отправки аякса /mydir/mail.php.
Если же вы не указываете слеш в начале (как у вас было), то это уже относительный путь. Тогда сервер ищет файл mail.php в текущей директории (относительно адреса страницы, с которой идет отправка), т.е. если ваша форма находится на странице с адресом /category1/article-26.html, то файл mail.php должен лежать в реальной папке /category1/mail.php - тогда бы тоже все заработало.

Про ухищрения с настройкой nginx не буду тут. Достаточно понимать то, что выше. Просто старайтесь указывать полные пути от корня.
На связи в телеге @sivers
*

Spell161

  • Новичок
  • 4
  • 0 / 0
Re: ajax + Joomla
« Ответ #7 : 24.01.2020, 08:19:56 »
Не странно. Когда вы ставите слеш в начало ссылки, это означает, что указываете путь от корня. Поэтому пришлось положить файл в корень и написать /mail.php. А можно было оставить его в вашей папке и указать путь для отправки аякса /mydir/mail.php.
Если же вы не указываете слеш в начале (как у вас было), то это уже относительный путь. Тогда сервер ищет файл mail.php в текущей директории (относительно адреса страницы, с которой идет отправка), т.е. если ваша форма находится на странице с адресом /category1/article-26.html, то файл mail.php должен лежать в реальной папке /category1/mail.php - тогда бы тоже все заработало.

Про ухищрения с настройкой nginx не буду тут. Достаточно понимать то, что выше. Просто старайтесь указывать полные пути от корня.

Понял, спасибо за разъяснение.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблон контейнера Joomla

Автор yyyuuu

Ответов: 3
Просмотров: 121
Последний ответ 09.01.2021, 02:16:58
от yyyuuu
Joomla 3.9.23 не работают ссылки в меню на материалы

Автор Anna78

Ответов: 2
Просмотров: 123
Последний ответ 08.01.2021, 11:18:50
от Anna78
Как вставить в title Joomla - Emodzi?

Автор timofe

Ответов: 1
Просмотров: 77
Последний ответ 07.01.2021, 10:18:52
от voland
Перенесено: Apache NetBeans + Joomla 3.9

Автор b2z

Ответов: 0
Просмотров: 75
Последний ответ 04.01.2021, 15:50:17
от b2z
Как убрать слово "Подкатегории" в Joomla 3?

Автор ALEXRAW

Ответов: 12
Просмотров: 133
Последний ответ 23.12.2020, 22:47:19
от AlexB