thegreatestmafaka
@thegreatestmafaka

Как передать массив в PHP через AJAX и отправить его на email?

Есть вот такой код, где я создаю массив и пытаюсь передать его с помощью AJAX в PHP-файл, а там отправить себе на email.
Вот HTML:
<select id="id">
  <option>Раз</option>
  <option>Два</option>
  <option>Три</option>
</select>

<select id="super">
  <option>Четыре</option>
  <option>Пять</option>
  <option>Шесть</option>
</select>

<select id="puper">
  <option>Семь</option>
  <option>Восемь</option>
  <option>Девять</option>
</select>

<form>
<input type="text" name="name" placeholder="Как к вам обращаться">
<input type="email" name="email" placeholder="Ваш email">
<input type="submit" id="btn" value="Отправить">
</form>


Вот JS:
var idFin = $("#id option:selected").text();
var superFin = $("#super option:selected").text();
var puperFin = $("#puper option:selected").text();
var allData = {
    id: idFin,
    super: superFin,
    puper: puperFin,
    name: "",
    email: "",
};
var test = [];

$('#btn').click(function () {
  if ($("input[type='email']").val() == "") {
    $("input[type='email']").css("color","red");
    return false;
  };
});    

$("form").submit(function () {
  allData[name] = $("input[type='text']").val();
  allData[email] = $("input[type='email']").val();
  test.push(allData);
  $.ajax({
    type: "POST",
    url: "mail.php",
    data: {test: test},
    dataType: "json",
    success: function () {
      alert("Все супер!");
    },
    error: function(){
      console.log('error');
    }
  });
  return false;
});


А вот php, который вроде как должен отправлять мне сообщение:
<?php

$recepient = "self.19978@gmail.com";

$id= trim($_POST["id"]);
$super = trim($_POST["super"]);
$puper = trim($_POST["puper"]);
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$message = "Id: $id \nSuper: $super \nPuper: $puper \nИмя: $name \nE-mail: $email";

$pagetitle = "Новое сообщение";

mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");
?>

Но почему-то ничего не выходит, страница перезагружается при отправке формы, ошибок в консоли не видно и сообщение соответственно не приходит. В каком месте я сделал ошибку? Подскажите пожалуйста!
  • Вопрос задан
  • 1531 просмотр
Решения вопроса 1
@tyzberd
Зачем его создавать при клике
$('#btn').click(function () {
  allData = {
    id: idFin,
    super: superFin,
    puper: puperFin,
    name: "",
    email: "",
  }
});

тут нужны кавычки allData["name"]
или так allData.name
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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