2015-12-19 2 views
0

Я строю форму контакта Ajax/PHP для моего проекта со следующими полями:Ajax/PHP контактную форму вопрос

Имя (обязательно), электронная почта (обязательно) Тема (Не требуется) и веб-сайт (не требуется)

Всё работает нормально единственная проблема сейчас, если пользователь ничего не вводить в Тема и или Сайт полей электронной почты я получаю показывает эти 2 поля следующим образом:

Тема: (показывает пустой)

Сайт: (показывает пустой)

Можно не показывать эти 2 поля вообще, если пользователь ничего не вводить так на электронную почту я получаю I только получить:

имя: [имя пользователя]

Электронная почта: [адрес электронной почты пользователя]

Я просто проводка 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 protected]"; 
$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; 
    } 
} 

?> 

Спасибо всем!

+0

Это может иметь что-то делать с PHP, но не в коде, который совместно. Попробуйте отлаживать дальше, чтобы найти место, где в пустые поля добавлено слово «пусто». – marekful

+0

Слово пустое не отображается. Я набрал пустое значение, и поля пустые. Я только что отредактировал эту часть вопроса для лучшего понимания;) – Tiago

+0

Вы пытались установить какие-либо проверки правильности ваших полей ввода? – Tony

ответ

1

Вы можете проверить условия с заявлением if. Что-то вроде этого:

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

На полученном электронном письме все еще отображается слово Subject: и слово Website: то, что я хочу, должно полностью удалить эти 2 поля, если пользователь ничего не вводил в них. Благодаря! – Tiago

+0

@Tiago: Затем вам нужно немного отладить, чтобы узнать, что на самом деле находится в переменных '$ subject' и' $ website'. Они не могут быть полностью пустыми, но могут иметь пробельные символы, которые вы хотите проверить. В любом случае, как вы проверяете условие в коде, это оператор 'if'. – David

1

Вы не используете 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); 
      } 
     } 
    }); 
} 
+0

Спасибо, но по полученному электронному письму он по-прежнему показывает слово Subject: и слово Website: то, что я хочу, - это полностью удалить эти 2 поля, если пользователь ничего не вводил в них. Благодаря! – Tiago

+0

Используете ли вы код javascript для отправки формы? Или вы используете только базовый '

'? – David

+0

Это скрипт JS https: //fiddle.jshell.сеть/L7ps8d0t/ – Tiago

Смежные вопросы