Я не могу получить свою веб-форму для отправки (php, javascript)

0

Я не получаю никаких писем, когда заполняется моя веб-форма. Это не дает мне никаких ошибок. Код, указанный ниже:

Форма HTML:

<div class="col-md-6"> 
  <h3>General Questions? <p class="h4">Use our form.</p></h3>
  <address>Required fields are marked with an *.</address>  
<div class="col-md-12">
<form data-toggle="validator" role="form" class="form-horizontal" id="contactForm">

<!-- Name-->
  <div class="form-group">
    <label for="inputName" class="control-label"><span class="glyphicon glyphicon-user"> 
</span> Name * </label><input type="text" class="form-control" id="inputName"  
placeholder="What your name?" data-errors="We need to know what to call you!" required>
<div class="help-block with-errors"></div>
</div>

<!-- Email-->
  <div class="form-group">
  <label for="inputEmail" class="control-label"><span class="glyphicon glyphicon-
envelope"></span> Email *</label>
<input type="email" class="form-control" id="inputEmail" placeholder="[email protected]" 
data-errors="This email address is invalid" required>
<div class="help-block with-errors"></div>
 </div>

<!-- Phone Number-->
 <div class="form-group">
 <label for="inputNumber" class="control-label"><span class="glyphicon glyphicon-phone-
  alt"></span> Phone Number</label>
 <input type="text" class="form-control" id="inputNnumber" data-minlength="9"   
   placeholder="(123) 867-5309">
</div>

<!-- Textarea -->
<div class="form-group">
<label for="inputMessage" class="control-label"><span class="glyphicon glyphicon-pencil">
</span> Message *</label>

<textarea rows="8" class="form-control" placeholder="How can we help?" data-errors="We 
  can't help if you don't tell us how!" required>
</textarea>
<div class="help-block with-errors"></div>
</div>

<!-- Select Basic -->
  <div class="control-group text-center">
    <span><span class="glyphicon glyphicon-question-sign"></span> <strong>How should we 
    contact you?</strong></span><br>
    <input type="radio" name="contact" value="phone"> by phone
    <input type="radio" name="contact" value="email"> by email
  </div>

<!-- Button -->
<br>
 <div class="form-group">
 <button type="submit" class="btn btn-primary btn-sm btn-block">Submit</button>
 </div>
</form>

</div>
</div>

Javacript: (он на devnew.company.com/mail.php и в конечном итоге будет на company.com/mail.php. Правильно ли я оставляю его на /mail.php здесь?)

var mailUrl = "/mail.php";
var formId = "contactForm";
var completeHTML = ' <div class="alert alert-primary"> Sent! Thanks, we will be in touch    
    soon. </div> ';

function submitForm(){

    $.ajax({
    url : mailUrl,
    type: 'post',
    data:{
        inputName   : $('#inputName').val(),
        inputEmail  : $('#inputEmail').val(),
        inputNumber : $('#inputNumber').val(),
        inputMessage    : $('#inputMessage').val(),
        contact     : $('input[name="contact"]:checked').val()
    }
});
}
$(function(){
$('#contactForm').submit(function(){
submitForm();
$(this).html( completeHTML );
return false;
})
})

PHP

<?php

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

    if ($_POST['inputName'] != "") {
        $_POST['inputName'] = filter_var($_POST['inputName'], FILTER_SANITIZE_STRING);
        if ($_POST['inputName'] == "") {
            $errors .= 'Please enter a valid name.<br/><br/>';
        }
    } else {
        $errors .= 'Please enter your name.<br/>';
    }

    if ($_POST['inputEmail'] != "") {
        $email = filter_var($_POST['inputEmail'], FILTER_SANITIZE_EMAIL);
        if (!filter_var($inputEmail, FILTER_VALIDATE_EMAIL)) {
            $errors .= "$inputNumber is not a valid email address.<br/><br/>";
        }
    } else {
        $errors .= 'Please enter your email address.<br/>';
    }

    if ($_POST['inputNumber'] != "") {
        $homepage = filter_var($_POST['inputNumber'], FILTER_SANITIZE_NUMBER_INT);
        if ($_POST['inputNumber'] == "") {
            $errors .= "Please enter 9 digits.<br/><br/>";
        }
    } else {
        $errors .= 'Please enter your phone number.<br/>';
    }

    if ($_POST['inputMessage'] != "") {
        $_POST['inputMessage'] = filter_var($_POST['inputMessage'],     
FILTER_SANITIZE_STRING);
        if ($_POST['inputMessage'] == "") {
            $errors .= 'Please enter a message to send.<br/>';
        }
    } else {
        $errors .= 'Please enter a message to send.<br/>';
    }

    if ($_POST['radio'] != "") {
        $_POST['radio'] = filter_var($_POST['radio'], FILTER_SANITIZE_STRING);
        if ($_POST['inputName'] == "") {
            $errors .= 'Please choose an option.<br/><br/>';
        }
    } else {
        $errors .= 'Please choose one.<br/>';
    }

    if (!$errors) {
        $mail_to = '[email protected]';
        $subject = 'New Mail from Form Submission';
        $message  = 'From: ' . $_POST['inputName'] . "\n";
        $message .= 'Email: ' . $_POST['inputEmail'] . "\n";
        $message .= 'Homepage: ' . $_POST['inputNumber'] . "\n";
        $message .= "Message:\n" . $_POST['inputMessage'] . "\n\n";
         $message .= 'Contact choice: ' . $_POST['radio'] . "\n";
        mail($to, $subject, $message);

        echo "Thank you for your email, we'll be in touch!<br/><br/>";
    } else {
        echo '<div style="color: red">' . $errors . '<br/></div>';
    }
}
?>
  • 3
    Вы должны сузить проблему, должно быть легко определить, является ли это javascript или php, где находится проблема.
  • 0
    Проверьте вашу консоль на вкладке сети, чтобы увидеть статус запроса, чтобы получить более подробную информацию.
Показать ещё 2 комментария
Теги:
email

2 ответа

0
Лучший ответ

Из вашего кода это не похоже, что вы отправляете переменную Submit в свои данные ajax. Если это так, то ваш PHP не выполнит ваш исходный оператор if. Вы можете попробовать добавить print_r($_POST); в начале вашего PHP, а затем посмотрите консоль браузера, чтобы узнать, что получает PHP.

0

Может быть, ваш javascript считает, что переменные, которые вы пытаетесь передать, читаются как несуществующие javascript-вары ниже, что может быть возможно

$.ajax({
    url : mailUrl,
    type: 'post',
    data:{
        "inputName"   : $('#inputName').val(),
        "inputEmail"  : $('#inputEmail').val(),
        "inputNumber" : $('#inputNumber').val(),
        "inputMessage"    : $('#inputMessage').val(),
        "Submit"      : "TRUE",
        "contact"     : $('input[name="contact"]:checked').val()
    },success: function (data) {
       alert(data);     
    }
});

и добавьте это в начало вашего mail.php

foreach($_POST as $key => $value){
     $content .= $key.' : '.$value;
}
echo $content

Слишком то, что вы получаете на своем почтовом отправлении

  • 0
    Нет кости. К сожалению, это, вероятно, сломано повсюду, и я не знаю языков достаточно, чтобы это исправить. Я собираюсь нанять кого-то, на кого это похоже. Спасибо, в любом случае.
  • 0
    я внес изменения, пожалуйста, попробуйте, это может помочь вам в правильном направлении, я всегда перебираю все свои посты, просто чтобы посмотреть, что отправляет, а что нет
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню