4

我无法让我的 javascript 超链接按钮将数据发布到我的 php 表单电子邮件脚本。我尝试过几种不同的方法,但似乎没有任何效果。任何帮助表示赞赏。谢谢你。

我的表单代码:

<form id="form" action="contactform.php" method="POST" enctype="text/plain" >
      <fieldset>
        <label><strong>Your Name:</strong><input id="name" type="text" name="name">       </label>
        <label><strong>Your Phone Number:</strong><input id="phone" type="text" name="phone"></label>
        <label><strong>Your E-mail:</strong><input id="email" type="text" name="email"></label>
        <label><strong>Your Message:</strong><textarea id="message" name="message"></textarea></label>
        <div class="btns"><a href="contacts.html" class="button">Clear</a><a href="#" onclick="document.getElementById('form').submit();" class="button">Send</a></div>
      </fieldset>  
    </form>

联系表格.php:

<?php

    var_dump($_POST);

    if (isset($_POST['form'])) {


    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $visitor_email = $_POST['email'];
    $message = $_POST['message'];


    $email_from = 'emailaddress@gmail.com';
    $email_subject = "Contact Form Submission";
    $email_body = "Name: $name\n" . "Phone: $phone\n" . "Messge: $message";


    $to= 'emailaddress@gmail.com';
    $headers= "From: $email_from \r\n";
    $headers.= "Reply-To: $visitor_email \r\n";
    mail($to,$email_subject,$email_body,$headers);

    echo "Thank you for your interest. I will contact you shortly.";

    }else{
    echo "It didn't work.";
    }


    ?>

另外,我在 php 的开头有 var_dump 仅用于调试目的。不会成为最终代码的一部分。

4

5 回答 5

8

从表单标签中删除enctype="text/plain",PHP 不支持它。

请参阅:method="post" enctype="text/plain" 不兼容?

于 2013-04-05T03:53:02.253 回答
1

只需更换a标签如下。

<a href="Javascript:void(0);" 

并替换document.forms["myForm"].submit();

并添加name="myForm"到您的表单中。

完整代码

<form id="form" action="contactform.php" method="POST" name="myForm">
    <fieldset>
        <label><strong>Your Name:</strong><input id="name" type="text" name="name">       </label>
        <label><strong>Your Phone Number:</strong><input id="phone" type="text" name="phone"></label>
        <label><strong>Your E-mail:</strong><input id="email" type="text" name="email"></label>
        <label><strong>Your Message:</strong><textarea id="message" name="message"></textarea></label>
        <div class="btns">
            <a href="contacts.html" class="button">Clear</a>
            <a href="Javascript:void(0)" onclick="document.forms['myForm'].submit();" class="button">Send</a></div>
    </fieldset>  
</form>
于 2013-04-05T03:47:42.700 回答
1

虽然我知道这不能回答您的问题,但没有理由为此目的使用 Javascript(在上面的示例中),因为 HTML 输入元素将自动处理这两个函数。

<input type="reset" value="Clear" />
<input type="submit" value="Send" />

我只会做这样的事情来验证数据,然后我会使用onsubmit表单的操作(如果验证失败则返回 false)。

于 2013-04-05T03:53:30.730 回答
0

这将起作用:

<a href="#" onclick="document.form.submit();" class="button">Send</a>

您不需要getElementById,您可以通过这种方式简单地引用它。

于 2013-04-05T03:51:43.197 回答
0

我对此进行了测试,它可以工作....

<html>
<body>
<form id="form" action="contactform.php" method="POST">
      <fieldset>
        <label><strong>Your Name:</strong><input name="name" type="text" name="name">       </label>
        <label><strong>Your Phone Number:</strong><input name="phone" type="text" name="phone"></label>
        <label><strong>Your E-mail:</strong><input name="email" type="text" name="email"></label>
        <label><strong>Your Message:</strong><textarea name="message" name="message"></textarea></label>
        <div class="btns"><a href="contacts.html" class="button">Clear</a><a href="#" onclick="document.forms[0].submit();" class="button">Send</a></div>
      </fieldset>  
    </form>
</body>
</html>


<?php

var_dump($_REQUEST);

echo  "<BR>";

foreach ( $_POST as $key => $value )
{
    echo $key . " " . "=" . " " . $value;
    echo  "<BR>";
}

?>

您需要考虑的其他一些提示是:

  • 不要使用<strong>. 而是像使用超链接一样使用 css 类。示例label { font-weight:bold }<label class='strong'>
  • 考虑使用 jquery 和不显眼的 javascript。例子$("form").first().on("submit",function...
  • 不要在输入上应用标签。只需关闭标签标签,然后使用输入,或用于<label for="input1">匹配输入并在单击文本时启用复选框。
  • 指定一个 name 属性,因为它是在 post 上发送到服务器的内容...id 用于浏览器中的脚本引用
于 2013-04-05T04:14:43.553 回答