【问题标题】:Ajax/PHP contact form issueAjax/PHP 联系表单问题
【发布时间】:2016-03-26 01:43:15
【问题描述】:

我正在为我的项目构建一个 ajax/php 联系表单,其中包含以下字段:

姓名(必填)、电子邮件(必填)、主题(不需要)和网站(不需要)

一切正常,现在唯一的问题是,如果用户没有在 Subject 和或 Website 字段中输入任何内容,我收到的电子邮件会显示这两个字段,如下所示:

主题:(显示空白)

网站:(显示空白)

如果用户没有输入任何内容,是否可能根本不显示这两个字段,所以在我收到的电子邮件中我只收到:

姓名:[用户名]

电子邮件:[用户电子邮件地址]

我只是发布 PHP 代码,因为我认为这仅与 PHP 而不是 Ajax 脚本有关:

<?php

$errorMSG = "";

// NAME
if (empty($_POST["name"])) {
    $errorMSG = "Name is required ";
} else {
    $name = $_POST["name"];
}

// EMAIL
if (empty($_POST["email"])) {
    $errorMSG .= "Email is required ";
} else {
    $email = $_POST["email"];
}

// SUBJECT
$subject = $_POST["subject"];

// WEBSITE
$website = $_POST["website"];

// MESSAGE
if (empty($_POST["message"])) {
    $errorMSG .= "Message is required ";
} else {
    $message = $_POST["message"];
}


$EmailTo = "email@myemail.com";
$Subject = "New Message Received";

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";
$Body .= "Website: ";
$Body .= $website;
$Body .= "\n";
$Body .= "Subject: ";
$Body .= $subject;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $message;
$Body .= "\n";

// send email
$success = mail($EmailTo, $Subject, $Body, "From:".$email);

// redirect to success page
if ($success && $errorMSG == ""){
   echo "success";
}else{
    if($errorMSG == ""){
        echo "Something went wrong :(";
    } else {
        echo $errorMSG;
    }
}

?>

谢谢大家!

【问题讨论】:

  • 它可能与 PHP 有关,但与您共享的代码无关。尝试进一步调试以找到将“空白”一词添加到空字段的位置。
  • 单词空白不显示我输入了空白,这意味着字段为空。我刚刚编辑了问题的那一部分以便更好地理解;)
  • 您是否尝试在输入字段上设置任何验证检查?
  • 只有姓名和电子邮件有验证

标签: php forms contact


【解决方案1】:

您可以使用if 语句检查条件。像这样的:

if (!empty($subject)) {
    $Body .= "Subject: ";
    $Body .= $subject;
    $Body .= "\n";
}

【讨论】:

  • 在收到的电子邮件中仍然显示单词主题:和单词网站:如果用户没有在其中输入任何内容,我想要完全删除这两个字段。谢谢!
  • @Tiago:那么您将需要进行一些调试以找出$subject 和$website 变量中的实际内容。它们可能不完全为空,但可能包含您要检查的空白字符。无论哪种方式,您在代码中检查条件的方式都是使用 if 语句。
【解决方案2】:

你不使用formData,所以disabling这个字段不起作用。

如果你想摆脱空变量,根据这样的条件构建数据

function submitForm() {

    var data = {
        name: $("#name").val(),
        email: $("#email").val()
    }

    if($("#subject").val() !== "") {
        data.subject = $("#subject").val()
    }

    if($("#website").val() !== "") {
        data.website = $("#website").val()
    }

    $.ajax({
        type: "POST",
        url: "php/form-process.php",
        data: data,
        success: function(text) {
            if (text == "success") {
                formSuccess();
            } else {
                formError();
                submitMSG(false, text);
            }
        }
    });
}

【讨论】:

  • 谢谢,但在收到的电子邮件中仍然显示单词主题:和单词网站:如果用户没有在其中输入任何内容,我想要完全删除这两个字段。谢谢!
  • 您是否使用任何 javascript 代码提交表单?还是你只使用基本的&lt;form action="process.php"&gt;?
  • 在我收到的电子邮件中,我现在收到的是: 姓名:(用户名)电子邮件:(用户电子邮件)网站:NO_WEBSITE 主题:NO_SUBJECT 消息:(用户消息)
  • 对不起,但我不太确定该代码的确切粘贴位置。这是我的小提琴链接:fiddle.jshell.net/L7ps8d0t 如果可以的话,你能更新那里的代码吗?谢谢!
  • 在您的 submitForm() 函数中。请查看新的更新:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多