электронная почта не несет электронную почту в php-скрипт

91
9

У меня есть поле ввода электронной почты и кнопка отправки, при нажатии которой я хочу изменить текстовое поле, указав пользователю, что они подписаны. По какой-то причине поле электронной почты не передает в файл php то, что было набрано. Однако я знаю, что php выполняется, потому что он просто дает мне ошибку подписки каждый раз. Следующий вопрос был задан здесь, но решение не сработало.

Я думаю, что это проблема с использованием <form> и <button> в сочетании, но я не знаю, как правильно это выполнить, какие-либо идеи?

Html:

   <html>
<head>
<link rel="stylesheet" href="mystyle.css">
<title>Community Sound</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({url: "phEmail.php", success: function(result){
$("#div1").html(result);
}});
});
});
</script>
<body>
<!-- Subscription -->
<div class="container">
<div class="no-result vertical-align-outer">
<div class="vertical-align">
<form method="post" >
<input name="email" class="email glowing-border" type="email" placeholder="Enter your email address ...">
<button type="button" onclick="return getData()" class="emailbtn">Subscribe</button>
</form>
</div>
</div>
</div>
<div id="div1">Not Subscribed</div>
</body>
</head>

PHP:

<?php
$to = "garvernr@mail.uc.edu";
$from = "newsubscription@samplepackgenerator.com";
$headers = "From: " . $from . "\r\n";
$subject = "New subscription";
$body = "New user subscription: " . $_POST['email'];
if( filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) )
{
if (mail($to, $subject, $body, $headers, "-f " . $from))
{
echo 'You have been added to our mailing list!';
}
else
{
echo 'There was a problem with your e-mail (' . $_POST['email'] . ')';
}
}
else
{
echo 'There was a problem with your e-mail (' . $_POST['email'] . ')';
}
?>

спросил(а) 2015-12-25T10:35:00+03:00 4 года, 10 месяцев назад
1
Решение
57

Вы можете отправить данные формы через сообщение формы на другую страницу или вы можете выдать вызов ajax. В настоящее время вы пытаетесь что-то между ними и имеете два обработчика onClick, один в самом элементе управления onclick="return getData()" и один добавленный через jQuery.

Первый отсутствует полностью, а второй сверху (jQuery AJAX) не отправляет никаких данных.

Измените это так:

....
<button type="button" id="sendbutton" class="emailbtn">Subscribe</button>
....

И ваш аякс:

$(document).ready(function(){
$("#sendbutton").click(function(){
$.ajax({
url: "phEmail.php",
data: { "email": $('#sendbutton').val() },
success: function(result){
$("#div1").html(result);
}});
});
});

Когда вы знакомы с этим, вы можете рассматривать сериализацию всей формы за один раз, что было бы более общим. Посмотрите на документы jQuery для этого

ответил(а) 2015-12-25T10:53:00+03:00 4 года, 10 месяцев назад
41

Проблема в том, что ваша форма не отправляет никаких данных.

Вам нужно изменить ваш вызов ajax и добавить данные arrtibute.

$("button").click(function(){
$.ajax({
url: "phEmail.php",
data:{email: $("input.email").value},
success: function(result){
$("#div1").html(result);
}
});
});

ответил(а) 2015-12-25T10:49:00+03:00 4 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема