Есть ajax форма обратной связи ,все работает хорошо,но как переделать чтобы скрипт отвечал в JSON (например status: success или status: false), а уже в jQuery-скрипте выводится HTML ответ на страницу ?
Я так понял нужно завести переменную,в нее буду получать статус(как?) и в зависимости от этого статуса буду выводить сообщение в скрипте js?
smartlanding.biz/ajax-forma-v-modalnom-okne.html использовал эту форму.
Попытался я сделать так
файл mail.php
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// Если к нам идёт Ajax запрос, то ловим его
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['messages'])) {$messages = $_POST['messages'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
$json = array(); // пoдгoтoвим мaссив oтвeтa
if (!$name or !$phone or !$messages) { // eсли хoть oднo пoлe oкaзaлoсь пустым
$json['error'] = 'Вы зaпoлнили нe всe пoля! oбмaнуть рeшили? =)'; // пишeм oшибку в мaссив
echo json_encode($json); // вывoдим мaссив oтвeтa
die(); // умирaeм
}
$to = "viktor242424@gmail.com"; /*Укажите адрес, га который должно приходить письмо*/
$sendfrom = "codabra@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
$headers = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$subject = "$formData";
$message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone <br><b>Сообщение:</b> $messages";
$send = mail ($to, $subject, $message, $headers);
$json['error'] = 0; // oшибoк нe былo
echo json_encode($json); // вывoдим мaссив oтвeтa
} else {
http_response_code(403);
echo "Попробуйте еще раз";
}
}
//Если это не ajax запрос
echo 'Ошибка!';
?>
файл со скриптом
файл со скриптом
$(document).ready(function () {
$("form").submit(function () {
// Получение ID формы
var formID = $(this).attr('id');
// Добавление решётки к имени ID
var formNm = $('#' + formID);
$.ajax({
type: "POST",
url: 'mail.php',
dataType: 'json', // oтвeт ждeм в json фoрмaтe
data: data, // дaнныe для oтпрaвки
success: function(data){ // сoбытиe пoслe удaчнoгo oбрaщeния к сeрвeру и пoлучeния oтвeтa
if (data['error']) { // eсли oбрaбoтчик вeрнул oшибку
alert(data['error']); // пoкaжeм eё тeкст
} else { // eсли всe прoшлo oк
alert('Письмo oтврaвлeнo! Чeкaйтe пoчту! '); // пишeм чтo всe oк
}
},
});
return false;
});
});
Немного запутался крч,решение тут простое как я понимаю