На срабатывает ajax в модуле обратной связи
Здравствуйте, пишу простенький модуль к joomla 3, вот код аякс, но он коробит шаблон при отправке и копирует форму
смотрите здесь tur-3d.ru Код:
jQuery(document).ready(function($) { |
Что здесь не так? по моему где то внизу!
ГОТОВ ЗАПЛАТИТЬ за помощь, немного, но все же. Надо поправить код чтобы не вставлял страницу в страницу и выводил сообщения php обработчика. |
Цитата:
|
Поправьте пожалуйста код если не сложно
речь идет о ajax скрипте или php скрипте? |
Какой код, JS? Там править нечего не он виновник.
Кратко: индексный файл, собственно, это может быть солянка из подключаемых файлов и шаблонов, но в любом случае это результирующий html-код страницы. Если асинхронный запрос обращается к индексному файлу, то обрабатывать этот запрос (или подключать файл обработчик его) нужно до любого вывода в браузер, то есть в самом начале. После того как все операции обработчиком будут выполнены и отправлен ответ клиенту, обязательно выход - exit; В противном случае клиенту будут отправляться все, что выполняется на этой странице. Так понятно? |
понятно то понятно но как это победить? я так понял что тут виноват пхп файл модуля, отвечающий за обработку
<?php // No direct access defined( '_JEXEC' ) or die; $url = JURI::current(); $post = (!empty($_POST)) ? true : false; if($post) { $email = $_POST['email']; $name = $_POST['name']; $email = $_POST['email']; $tel = $_POST["tel"]; $message = $_POST['message']; $error = ''; if(!$name) {$error .= 'Укажите свое имя. ';} if(!$email) {$error .= 'Укажите электронную почту. ';} if(!$tel) {$error .= 'Укажите тему обращения. ';} if(!$message || strlen($message) < 1) {$error .= 'Введите сообщение. ';} if(!$error) { $address = "homelux@yandex.ru"; $mes = "Имя: ".$name."\n\nТема: " .$tel."\n\nСообщение: ".$message."\n\n"; $send = mail ($address,$tel,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email"); if($send) {echo 'OK';} } else {echo '<div class="err">'.$error.'</div>';} } ?> <div class="module<?php echo $moduleclass_sfx; ?>"> <form id="contact" action="" method="post"> <H3>Форма обратной связи</H3> <div id="note"></div> <div id="fields"> <p><input type="text" name="name" id="author" placeholder="Имя"> <label for="author">Как вас зовут</label></p> <p><input type="email" name="email" id="email" placeholder="E-mail"> <label for="email">Электронная почта</label></p> <p><input type="text" name="tel" id="url" placeholder="Тема"> <label for="url">Тема сообщения</label></p> <p><textarea name="message" cols="1" rows="10" id="comment" style="width:98%" placeholder="Введите сюда текст сообщения"></textarea></p> <p><button type="submit" id="submit" class="go">Отправить сообщение</button></p> </div> </form> </div> Или проще тогда может сделать вывод не сообщений обработчика, а вывод сообщений самого аякса? а валидацию полей плагином сделать |
если поможешь решить проблему 150 руб твои
|
Если так:
defined( '_JEXEC' ) or die; то на клиенте должно быть так: success: function(data) { if(!!data) $(result).html(data); // Вывод текста результата отправки else alert('Мол фигушки вам'); //нельзя оставлять клиента в неведении } Это $post = (!empty($_POST)) ? true : false; полнейшая глупость, ибо empty($_POST) и возвращает булево значение, а ! это всего лишь его инвертирование. Выбросить, и проще: if(!empty($_POST)) { //или просто if($_POST) ибо это суперглобальный массив, который всегда есть, но пустой, если не было POST запросов //здесь операции //а выдача ответа клиенту с выходом!!! //if($send) {echo 'OK';} - убрать //else {echo '<div class="err">'.$error.'</div>';} - убрать //ответ клиенту exit(!$error ? 'OK' : '<div class="err">'.$error.'</div>'); } И да, почтовые отправления так не оформляют, читайте рекомендации RFC. |
Привет, сегодня потестю - если пашет бабки твои
|
if(!empty($_POST)) { $name = $_POST['name']; $email = $_POST['email']; $tel = $_POST["tel"]; $message = $_POST['message']; $error = ''; if(!$name) {$error .= 'Укажите свое имя. ';} if(!$email) {$error .= 'Укажите электронную почту. ';} if(!$tel) {$error .= 'Укажите тему обращения. ';} if(!$message || strlen($message) < 1) {$error .= 'Введите сообщение. ';} if(!$error) { $address = "homelux@yandex.ru"; $mes = "Имя: ".$name."\n\nТема: " .$tel."\n\nСообщение: ".$message."\n\n"; $send = mail ($address,$tel,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email"); exit(!$error ? 'OK' : '<div class="err">'.$error.'</div>'); } } Так выдает белый лист с надписью ок, прдскажи куда строку с exit ставить? |
Часовой пояс GMT +3, время: 22:34. |