Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Форма обратной связи AJAX как поправить ?

Форма обратной связи AJAX как поправить ?


     25.03.2020    Шаблоны (TPL), jQuery, Общие вопросы по PHP    116

вопрос
Есть вот такая структура
Есть форма на главной странице с полями имя номер телефона и тд,
есть вот такой код


и вот такой php фаил



в форме стоят атрибуты



Заранее спасибо

Ответа пока нет


9 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 25 марта 2020 10:35 -

Просьба обрамлять весь код тегами code. Больше я за Вас это делать не буду.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

cortin
Юзер

cortin - 25 марта 2020 10:45 -

вы ajax отсылаете $_GET, а пхп стоит в полях $_POST. Вот поправте

$("#forms1,#forms2").submit(function () {
    $.ajax({
        method: "POST",
        url: "engine/modules/feedbackdm/res.php",
        data: $(this).serialize()
    }).done(function () {
        alert("Спасибо за ваш ответ!");
        $("#forms1,#forms2").modal('hide');    
        $('input').val('');
        $('select').val('');
    });
    return false;
});

Turdex75
Юзер

Turdex75 - 25 марта 2020 10:47 -

да я уже все перепробовал, и полностью в пост и в гет пишет что типа отправил но письмо не приходит, на чистом html все работает

dj-avtosh
PHP-developer

dj-avtosh - 25 марта 2020 10:52 -

а "на чистом html" куда запрос идет?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Turdex75
Юзер

Turdex75 - 25 марта 2020 10:56 -

php

вот какая ошибка в консоли

Turdex75
Юзер

Turdex75 - 26 марта 2020 14:40 -

Что ни кто не знает ?
Помогите пожалуйста, денежку заплачу!

LazyDev
Эксперт

LazyDev - 26 марта 2020 14:59 -

1. Создать файл в /engine/ajax/ с названием feedback_email.php в него вставить:
<?php
if(!defined('DATALIFEENGINE')) {
	header( "HTTP/1.1 403 Forbidden" );
	header ( 'Location: ../../' );
	die( "Hacking attempt!" );
}

$recepient = 'admin@site.ru';
$sender = 'robot@site.ru';

$name =  trim($_GET['name']);
$phone = trim($_GET['phone']);
$email = trim($_GET['email']);
$select = trim($_GET['plan']);
$id_form = trim($_GET['id_form']);
$reviews = trim($_GET['message']);
$ip = $_IP;
$dtofz = date('d.m.y', time());
$sitename = "(Дель-мара)";
$date = trim($_GET['date']);
$people = trim($_POST['people']);

$pagetitle = "Заявка с сайта! \"{$sitename}\" Заказ столика Удобное время: {$vrema_zakaza}";

$email = preg_replace("/ {1,}/", "_", $email);
$select = preg_replace("/ {1,}/", "_", $select);
$id_form = preg_replace("/ {1,}/", "_", $id_form);


$message = "\nИмя: {$name} \nТелефон: {$phone} \nДата: {$date} \nУдобное время: {$vrema_zakaza} \nКоличество гостей: {$people}  \nEmail: {$email}  \nформа {$id_form} \nIP: {$ip} ";

$config['admin_mail'] = $sender;

include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/mail.class.php'));
$mail = new dle_mail($config , false);
$mail->send($recepient, $pagetitle, $message);


2. Заменить скрипт на:
$('#forms1, #forms2').submit(function() {
    $.ajax({
        type: 'GET',
        url: 'engine/ajax/controller.php?mod=feedback_email',
        data: $(this).serialize()
    }).done(function() {
        alert('Спасибо за ваш ответ!');
        $('#forms1, #forms2').modal('hide');    
        $('input').val('');
        $('select').val('');
    });
	
    return false;
});


Только для DLE 13.0 и выше.

Мой блог: LazyDev.pro
Если мне не интересен вопрос - не помогаю, и за этим по контактам прошу не писать.

Pringles
Юзер

Pringles - 27 марта 2020 04:05 -

LazyDev,
так в данном случае правильнее, иначе нужно на backend делать parse_str входящей строки
$('#forms1, #forms2').submit(function() {
    $.ajax({
        type: 'GET',
        url: 'engine/ajax/controller.php?mod=feedback_email',
        data: $(this).serializeArray()
    }).done(function() {
        alert('Спасибо за ваш ответ!');
        $('#forms1, #forms2').modal('hide');    
        $('input').val('');
        $('select').val('');
    });
	
    return false;
});


И $_POST['people'] заменить на $_GET['people']

Turdex75
Юзер

Turdex75 - 26 марта 2020 16:33 -

не сработало

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх