V
V
viktorulyushev2017-01-12 15:12:46
JavaScript
viktorulyushev, 2017-01-12 15:12:46

How to send a json response?

There is an ajax feedback form, everything works well, but how can I change it so that the script responds in JSON (for example, status: success or status: false), and the HTML response to the page is already displayed in the jQuery script?
As I understand it, you need to create a variable, I will receive the status in it (how?) And, depending on this status, I will display a message in the js script?
smartlanding.biz/ajax-forma-v-modalnom-okne.html used this form

Answer the question

In order to leave comments, you need to log in

1 answer(s)
V
viktorulyushev, 2017-01-12
@viktorulyushev

What happened is the
mail.php file

<?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 !$email or !$subject or !$message) { // 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 = "[email protected]"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "[email protected]"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $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 'Ошибка!';

?>

script file
$(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;
    });
});

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question