2016-06-26 3 views
0

У меня есть HTML-форма и связана с jQuery и PHP. JQuery проверяет, являются ли поля пустыми или нет, если они не пусты, он должен отправить данные в файл PHP. Но это не работает.Невозможно отправить почту

$(document).ready(function() { 
 
    $("#submit").click(function() { 
 
    var name = $("#name").val(); 
 
    var message = $("#message").val(); 
 

 
    $("#returnmessage").empty(); // To empty previous error/success message. 
 
    // Checking for blank fields. 
 
    if (name == '') { 
 
     alert(" Please Fill your name"); 
 
    } else if (message == '') { 
 
     alert("Please Fill message"); 
 
    } else { 
 
     $.post("xxx.php", { // To php file. 
 
     name: name, 
 
     message: message 
 
     }, function(data) { 
 
     $("#returnmessage").append(data); 
 
     if (data == "We will contact you soon.") { 
 
      $("#form")[0].reset(); // To reset form fields on success. 
 
     } 
 
     }); 
 
    } 
 
    }); 
 
});
<form name="form" method="post" action=""> 
 
    <h4>FEED-BACK FORM</h4> 
 
    <p id="returnmessage"></p> 
 
    <label>Name: </label> 
 
    <input type="text" id="name" /><br> 
 
    <label>Message: </label> 
 
    <input type="text" id="message" /><br> 
 
    <input type="button" id="submit" value="Submit"/> 
 
</form>

РНР-КОД:

if(!isset($_POST['submit'])) 
     { 
    //Need to submit the form. 
    exit; 
     } 
$name = $_POST['name']; 
$message = $_POST['message']; 

$email_body ="Dear sir,\n". 
"Name: $name\n". 
"Message: $message\n"; 

//Email sending to 
$email_from = '[email protected]'; 
$email_subject = "my-form"; 
$to = "[email protected]"; 
$headers = "From: $email_from \r\n"; 

//Send the email! 
mail($to,$email_subject,$email_body,$headers); 
+0

Что-нибудь в консоли? Вы должны отступать от своих блоков кода. – chris85

+0

Я думаю, что может быть неправильный код. – user3410277

+0

@ user3410277 Ваш код выглядит хорошо ... Что происходит? Вы можете показать свой вызов «POST» AJAX? С помощью вкладки «Сеть»? –

ответ

0

Вы используете эту проверку:

if (!isset($_POST['submit'])) 

И это не будет в основном не выполнится из-за того, как вы POST в данные на сервер, а также, как каждый браузер возьмет это. Особенно Chrome, не будет POSTsubmit. Это в основном зависит от данных, которые AJAX отправляющего, так что вы должны увидеть, что он посылает:

Вместо кода используйте:

if (count($_POST) == 0) 
    exit; 

А также, убедитесь, что вы создали свою функцию mail() для работы с SMTP или когда-либо, в вашем php.ini. Только у вас может проверить вашу консоль, что ответ сервера. Поэтому дайте более подробную информацию своему клиенту:

if (mail($to, $email_subject, $email_body, $headers)) 
    die("Success"); 
else 
    die("Failed"); 

Вышеупомянутая часть поможет диагностировать, где сценарий поступил не так. В то же время перед выходом в первую часть ответьте сообщением. Вместо кода используйте:

if (count($_POST) == 0) 
    die("Need to POST"); 

Кроме того, на стороне клиента, убедитесь, что вы используете последнюю или довольно приличную версию JQuery (версия> 1.9.1).

Похоже, что OP нуждается в более подробном объяснении, чтобы найти ошибку. Может быть полезным для других:

  1. Откройте URL в Chrome. Пожалуйста, сообщите нам, что URL вы используете в своей адресной строке.
  2. После того, как страница загружена, пресс F12 кнопка. Это вызывает консоль.
  3. Если это не помогло, щелкните правой кнопкой мыши и выберите Проверьте, затем нажмите Консоль. Прежде всего, сначала очистите консоль, нажав кнопку «Крест».
  4. Обновить страницу. Посмотрите, есть ли какие-либо ошибки в консоли.
  5. Сообщите нам, что вы видите на консоли, и после предоставления информации перейдите на вкладку «Сеть», нажмите «Отправить», проверьте, есть ли у вас какая-либо деятельность.

Ждут дальнейших отзывов.


Update:

Вы проверяете в методе success:

if (data == "We will contact you soon.") 

Но где вы посылаете его в файле PHP? Это нужно в конце файла PHP.

echo "We will contact you soon."; 
+0

На самом деле даже браузер не зависит ... зависит только от данных ajax – charlietfl

+0

@charlietfl Иногда приятель. jQuery зависит. –

+0

@Mr. Правеен, не работает – user3410277

0

Я попробовал ваш код, но не получил ошибку. Выполнить код. Какая версия использует вашу библиотеку jQuery?

Вы, пожалуйста, попробуйте с

JQuery Lib 2.2 https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js

Как это?

jQuery(document).ready(function() { 
    jQuery("#submit").click(function() { 
    var data_name = jQuery("#name").val(); 
    var data_message = jQuery("#message").val(); 
    jQuery("#returnmessage").empty(); // To empty previous error/success message. 
    // Checking for blank fields. 
     if (data_name == '') { 
     alert(" Please Fill your name"); 
     } else if(data_message == '') { 
     alert("Please Fill message"); 
     } else { 
     jQuery.post("xxx.php", { // To php file. 
      name: data_name, message: data_message 
     }, function(data) { 
      jQuery("#returnmessage").append(data); 
      if (data == "We will contact you soon.") { 
      jQuery("#form")[0].reset(); // To reset form fields on success. 
      } 
     }); 
    } 
    }); 
}); 
+0

@Mr. Berk, я использую ajax .googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js, но он не работает – user3410277

+0

@ user3410277 Код работает у меня с 1.11.0. Непрерывное предупреждение. Просмотрите пожалуйста образец; https://jsfiddle.net/m6eLjajs/ –

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