电子邮件表格不携带电子邮件到PHP脚本

时间:2015-12-25 07:35:46

标签: javascript php html ajax email

我有一个电子邮件输入字段和一个提交按钮,按下时我想要一个文本字段来改变,告诉用户他们是订阅的。由于某种原因,电子邮件字段没有中继到输入电子邮件的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'] . ')';   
}
?>

2 个答案:

答案 0 :(得分:1)

您可以通过表单发送表单数据到另一个页面,也可以发出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文档

答案 1 :(得分:0)

问题是您的表单没有发送任何数据。

您需要修改您的ajax调用并添加数据arrtibute。

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