2016-02-27 2 views
-1

Я создал форму AJAX, которая отправляется на страницу php. Эта форма успешно отправляется с точки зрения, я получаю адрес электронной почты в своей базе данных, и у меня есть письмо с подтверждением, которое отправляется.Форма Ajax отправляется успешно, но появляется предупреждение об ошибке

Однако я получаю оповещение о том, «Ошибка |», поэтому очевидно, что это происходит из этого:

error: function (xhr, textStatus, errorThrown) { 
      alert(textStatus + "|" + errorThrown); 

Я не уверен, почему ошибка бросает, если он работает. Другое дело, эта форма перезагружает страницу. У меня есть event.preventDefault(); на месте, так зачем перегружать страницу?

Я ценю любую помощь.

<form action="" method="POST"> 
    <input type="email" id="footer-grid1-newsletter-input" placeholder="Your Email Address"> 
    <input type="submit" id="footer-grid1-newsletter-submit" name="submit"> 
</form> 
$(document).ready(function(){ 
    $("#footer-grid1-newsletter-submit").on("click", function() { 
     event.preventDefault(); 

     var newsletter_email = $("#footer-grid1-newsletter-input").val(); 

     $.ajax({ 
      url: "newsletterSend.php", 
      type: "POST", 
      data: { 
       "newsletter_email": newsletter_email 
      }, 
      success: function (data) { 
      // console.log(data); // data object will return the response when status code is 200 
       if (data == "Error!") { 
        alert("Unable to insert email!"); 
        alert(data); 
       } else { 
        /*$(".announcement_success").fadeIn(); 
        $(".announcement_success").show(); 
        $('.announcement_success').html('Announcement Successfully Added!'); 
        $('.announcement_success').delay(5000).fadeOut(400);*/ 
       } 
      }, 
      error: function (xhr, textStatus, errorThrown) { 
       alert(textStatus + "|" + errorThrown); 
       //console.log("error"); //otherwise error if status code is other than 200. 
      } 
     }); 
    }); 
}); 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$newsletter_email = $_POST['newsletter_email']; 

try { 

    $con = mysqli_connect("localhost", "", "", ""); 

    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 
    $stmt = $con->prepare("INSERT INTO newsletter (email, subscribed) VALUES (?, NOW())"); 
     if (false===$stmt) { 
      die('Newsletter email prepare() failed: ' . htmlspecialchars($con->error)); 
     } 
    $stmt->bind_param('s', $newsletter_email); 
     if (false===$stmt) { 
      die('Newsletter email bind_param() failed: ' . htmlspecialchars($stmt->error)); 
     } 
    $stmt->execute(); 
     if (false===$stmt) { 
      die('Newsletter email execute() failed: ' . htmlspecialchars($stmt->error)); 
     } 
} catch(Exception $e) { 
    die($e->getMessage()); 
} 
+2

отсутствующих в '' event' на .on ("щелчок", функция() {... 'это должно быть' .он ("щелчок", функция (событие) { ' – roullie

+0

установите 'dataType', а также отправьте' тот же тип из php' – guradio

+0

@guradio. Что именно вы имеете в виду? – Becky

ответ

1

Ваш event не имеет какой-либо ссылки

.on("click", function() { 

должен быть

.on("click", function (event) { 

Затем очистить форму. вы можете сделать

$("YOUR_FORM")[0].reset() 
Смежные вопросы