weixin_33743703 2017-06-26 09:20 采纳率: 0%
浏览 23

表格,AJAX和PHP

I have a simple Subscribe form that I want to get the contents of an 'email' input to post to a MySQL db using AJAX. This is successfully creating a record with the date and time but not inserting the email address.

Can anyone see what's wrong with the following please?

form.php

<form id="subscribe" action="?action=signup" method="post" data-abide>
  <div class="row collapse">
    <div class="large-10 large-centered columns">
      <div class="row collapse postfix-radius">
        <div class="small-9 columns">
    <div class="email-field">
          <input type="email" name="email" id="email" placeholder="Your Email Address" required>
      <small style="padding-left:10px; "class="error">Please enter a valid email address</small>
        </div>
    </div>
        <div class="small-3 columns">

      <input type="submit" id="button" class="button success postfix" value="Subscribe">
        </div>
      </div>
    </div>
  </div>
</form>

<span style="display:none;" id="message"><small><i class="fa fa-check" aria-hidden="true"></i> Subscribed</small></span>

<script type="text/javascript">
$(document).ready(function(){
    $('#subscribe').submit(function(){

        var data = $(this).serialize();

            $.ajax({
                type: 'post',
                url: 'subscribe_insert.php',
            data: data,
                success: function(data) {
            $("#message").fadeIn(250);
                }
            });
        return false;
   });
});
</script>

subscribe_insert.php

<?php

   include($_SERVER["DOCUMENT_ROOT"]."/dbconnect.php");

   $email = mysql_real_escape_string($_POST['email']);
   $date_time = date("Y-m-d H:i:s");

   $sql  = "INSERT INTO subscribe 
            (email,
            date)
            VALUES
            ('$email',
            '$date_time')"; 

   if ($conn->query($sql) === TRUE) {
    echo "";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

?>

Thanks,

John

  • 写回答

2条回答 默认 最新

  • weixin_33743880 2017-06-26 10:07
    关注

    Check in your database that email has the correct attributes:

    For exaple check that you have at least x characters allowed to be stored, check for the type of the field:

    It could be int when it it really should be something like varchar

    var_dump details:

    form.php is ok for this purpose. But we are going to modify the php file temporarily to check for "post" error in the email field:

    <?php
    
       include($_SERVER["DOCUMENT_ROOT"]."/dbconnect.php");
    
       $email = mysql_real_escape_string($_POST['email']);
       var_dump($email);  //dump email value
       /* comment this peace
       $date_time = date("Y-m-d H:i:s");
    
       $sql  = "INSERT INTO subscribe 
                (email,
                date)
                VALUES
                ('$email',
                '$date_time')"; 
    
       if ($conn->query($sql) === TRUE) {
          echo "";
       } else {
          echo "Error: " . $sql . "<br>" . $conn->error;
       }
      */
    
    ?>
    

    Now follow the next steps:

    1. Open chrome
    2. Open your webpage
    3. Hit F12
    4. Check the "Log XMLHttpRequests" checkbox
    5. Send your form and you will se something in the console like: XHR finished loading: POST http://localhost//folder/subscribe_insert.php
    6. Click the logged url of your console
    7. You may see a list of resources (depends of your project)
    8. Click the one that has the subscribe_insert.php title
    9. To your right you will see some tabs click response

    If there was some error or some data was echoed from that file (In this case our var_dump) you will see it there.

    If you see the email actually printing out It might be a database problem as I started tellong you.

    I know there are too many steps but it's very fast to do it, I hope I have helped you, greeting!

    评论

报告相同问题?