Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

Доброго времени суток, делаю форму обратной связи на ajax-е, но сообщен не приходит, подскажите пожалуйста что я упустил, Спасибо

 

 

1. Отправка ajax-м

<form id="call" method='post'>

  <input type="text" name="name">
  <input type="text" name="phone">
  <input type="email" name="email">
  <button> Отправить запрос</button>

</form>
$('#call').submit(function(){
	
var mail = $(this);

$.ajax({

  type: "POST",
  url:  "/catalog/controller/information/callback.php",
  data: mail.serialize(),
  success: function(){
    setTimeout( function(){
		  mail.trigger("reset");
		  alert("+++"); 
		  $.colorbox.close(); 
		  }, 1000 );
		},
  error: function(){
    setTimeout( function() {
      alert("Ошибка отправки! Напишите нам на почту: <?php echo $this->config->get('config_email'); ?>");
      mail.trigger("reset"); 
      $.colorbox.close(); 
  } , 
return false;
}); 

controller

<?php 

Class ControllerInformationCallback extends Controller {

	protected $error = array();

	public function index() { 

		if (($this->request->server['REQUEST_METHOD'] == 'POST')) {

			$mail 				= new Mail();
			$mail->protocol 	= $this->config->get('config_mail_protocol');
			$mail->parameter 	= $this->config->get('config_mail_parameter');

			$mail->hostname 	= $this->config->get('config_smtp_host');
			$mail->username 	= $this->config->get('config_smtp_username');
			$mail->password 	= $this->config->get('config_smtp_password');
			$mail->port 		= $this->config->get('config_smtp_port');
			$mail->timeout 		= $this->config->get('config_smtp_timeout');

			$mail->setTo($this->config->get('config_email'));
	  		$mail->setFrom($this->request->post['email']);
	  		$mail->setSender($this->request->post['name']);

			$mail->setText(strip_tags(html_entity_decode($this->request->post['phone'], ENT_QUOTES, 'UTF-8')));
	  	

      		$mail->send();

    	}

    	// Error

    	if (isset($this->error['name'])) {
    		$this->data['error_name'] = $this->error['name'];
		} else {
			$this->data['error_name'] = '';
		}
		
		if (isset($this->error['email'])) {
			$this->data['error_email'] = $this->error['email'];
		} else {
			$this->data['error_email'] = '';
		}

		if (isset($this->error['phone'])) {
			$this->data['error_phone'] = $this->error['phone'];
		} else {
			$this->data['error_phone'] = '';
		}		
		

		// POST 

		if (isset($this->request->post['name'])) {
			$this->data['name'] = $this->request->post['name'];
		} else {
			$this->data['name'] = $this->customer->getFirstName();
		}

		if (isset($this->request->post['email'])) {
			$this->data['email'] = $this->request->post['email'];
		} else {
			$this->data['email'] = $this->customer->getEmail();
		}

		if (isset($this->request->post['phone'])) {
			$this->data['phone'] = $this->request->post['phone'];
		} else {
			$this->data['phone'] = $this->customer->getTelephone();
		}

		$this->response->setOutput($this->render());
	} 

  	protected function validate() {

    	if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 32)) {
      		$this->error['name'] = $this->language->get('error_name');
    	}

    	if (!$this->ocstore->validate($this->request->post['email'])) {
      		$this->error['email'] = $this->language->get('error_email');
    	}

    	if ((utf8_strlen($this->request->post['phone']) < 11) || (utf8_strlen($this->request->post['phone']) > 32)) {
      		$this->error['phone'] = $this->language->get('error_phone');
    	}

		if (!$this->error) {
	  		return true;
		} else {
	  		return false;
		}  	  
  	}


}  
Надіслати
Поділитися на інших сайтах

Вопрос решил, тему можно закрывать

 

ЗЫ // Тему письма не написал вот и не мог отправить 

Надіслати
Поділитися на інших сайтах

  • 1 year later...
  • 2 years later...

Я скажу Вам так что эту тему создал Рак)))

 

как минимум ajax Url должен быть

 

url: "index.php?route=information/callback",

 

и у него много лишних функцию которые на стороне юзера можно проверить)

Надіслати
Поділитися на інших сайтах


$('.callback_modal form input').mask('+38 000-00-000-00');

$(document).on('submit', '.callback_modal form', function (e) {
    e.preventDefault();
    let phone = $(this).find('input').val();
    if (phone.length > 16) {
        $.ajax({
            type: "POST",
            url: "index.php?route=information/callback",
            data: {
                phone: phone
            },
            success: () => {
                $(this).html('<p>Ожидайте, скоро Вам перезвонят)</p>')
            }
        })
    } else {
        alert('Телефон введен не верно')
    }
});

 

/catalog/controller/information/callback.php

 

class ControllerInformationCallback extends Controller {
    public function index() {

        $this->load->model( 'catalog/information' );

        if ( ($this->request->server['REQUEST_METHOD'] == 'POST') ) {
            $mail = new Mail();
            $mail->protocol = $this->config->get( 'config_mail_protocol' );
            $mail->parameter = $this->config->get( 'config_mail_parameter' );
            $mail_to = $this->config->get( 'config_email' );
          //  $mail_to = '[email protected]';
            $mail->setTo( $mail_to );
            $mail->setFrom( '[email protected]' );
            $mail->setSender( 'Алюминий укр' );
            $mail->setSubject( 'Callback' );
            $mail->setText( strip_tags( html_entity_decode( $this->request->post['phone'], ENT_QUOTES, 'UTF-8' ) ) );
            if ( isset( $this->request->post['phone'] ) ) {
                $mail->send();
            }
        }
        if ( isset( $this->request->post['phone'] ) ) {
            print_r( [ 'success' ] );
        } else {
            print_r( [ 'error' ] );
        }
    }
}
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.