3

I have read many answers here and tried almost every but non of them helped me the problem is I want to send contact from data to phpmailer which will send the mail. I want to do it with jquery ajax. Email is going perfectly but the problem is my form redirects to the "action" . I tried preventDefault(); and return false; but it didn't helped me.

I want to show user the message after successful form submission. here is my form code I am using bootstrap

     <form class="form-horizontal" action="sections/contactdata.php" method="post" id="contact-us-form" enctype="multipart/form-data">
                   <!-- Name input-->
                      <div class="form-group">
                       <div class="col-md-12">
                             <input id="name" name="name" type="text"    placeholder="Your Name"
                               class="form-control input-md">
                         </div>
                     </div>

                     <!-- Email input-->
                     <div class="form-group">
                    <div class="col-md-12">
                        <input id="email" name="email" type="text" placeholder="Your Email"
                               class="form-control input-md">
                    </div>
                </div>

                <!-- phone input-->
                <div class="form-group">
                    <div class="col-md-12">
                        <input id="phone" name="phone" type="text" placeholder="Phone"
                               class="form-control input-md">
                    </div>
                </div>

                <!-- Textarea -->
                <div class="form-group">
                    <div class="col-md-12">
                        <textarea class="form-control" id="message" name="message" placeholder="Message"
                                  rows="6"></textarea>
                    </div>
                </div>


                <!-- Button -->
                <div class="form-group">
                    <div class="col-md-4 pull-right">

                        <input type="submit" name="singlebutton" class="btn btn-success" value="SEND" id="singlebutton">
                    </div>
                </div>


            </form>

my jquery ajax code

<script>

    $(document).ready(function (){
        $("#singlebutton").click(function(event)
       {
           /* stop form from submitting normally */
            event.preventDefault();

            /* get some values from elements on the page: */
            var $form = $( this ),
               $submit = $form.find( 'input[type="submit"]' ),
            name_value = $form.find( 'input[name="name"]' ).val(),
            phone_value = $form.find( 'input[name="phone"]' ).val(),

            email_value = $form.find( 'input[name="email"]' ).val(),
            message_value = $form.find( 'textarea[name="message"]' ).val(),
            url = $form.attr('action');

        /* Send the data using post */
        var posting = $.post( url, {
            name: name_value,
            email: email_value,
            phone: phone_value,
            message: message_value
        });

        posting.done(function( data )
        {
            /* Put the results in a div */
            $( "#contactResponse" ).html(data);

            /* Change the button text. */
            $submit.text('Sent, Thank you');

            /* Disable the button. */
            $submit.attr("disabled", true);
        });
        return false;
       });



   });

   </script>

my php mailer code

      <?php

  require_once '../assets/phpmailer/PHPMailerAutoload.php';

    if (isset($_POST['name'], $_POST['email'], $_POST['phone'], $_POST['message'])) {

    $fields = [

       'name' => $_POST['name'],
       'email' => $_POST['email'],
        'phone' => $_POST['phone'],
       'message' => $_POST['message']


       ];

      foreach ($fields as $field => $data) {

       }


     $m = new PHPMailer;

     $m->isSMTP();
     $m->SMTPAuth = true;
     $m->SMTPDebug = 1;
     $m->Host = 'smtp.gmail.com';
     $m->Username = 'myemail';
     $m->Password = 'mypassword';
     $m->SMTPSecure = 'ssl';
     $m->Port = 465;

    $m->isHTML();

    $m->Subject = 'Contact Form submitted';



          $m->Body = 'From:' . $fields['name'] . '(' . $fields['email'] . ')'  . '<p><b>phone:</b><br/>' . $fields['phone'] . '</p>' . '<p><b>Message</b><br/>' . $fields['message'] . '</p>';


         $m->FromName = 'Contact';





       $m->AddAddress('[email protected]', 'Pawan');

      if ($m->send()) {

        //        header('Location: ../index.php');
          //        print_r($_POST);
         //        echo 'message send';
            echo "<h2>Thank you for your comment</h2>";
          //        die();
            } else {
              //        echo 'try again later';
              //        print_r($_POST);
           echo "<h2>Sorry, there has been an error</h2>";
                 }


    }

i get email every time i submit the form but it goes to the action page and the echo the text there. i want it to submit without reload and show user that form is submitted and i should get the email to.

I also tried using submit , on click but nothing helped me please tell me were I am doing it wrong.

please help me thank u.

1

1 Answer 1

4

phpmailer code

    <?php

  require_once '../assets/phpmailer/PHPMailerAutoload.php';

    if (isset($_POST['name'], $_POST['email'], $_POST['phone'], $_POST['message'])) {

   $fields = [

    'name' => $_POST['name'],
    'email' => $_POST['email'],
    'phone' => $_POST['phone'],
    'message' => $_POST['message']


];

foreach ($fields as $field => $data) {

}


$m = new PHPMailer;

$m->isSMTP();
$m->SMTPAuth = true;
$m->SMTPDebug = false;
$m->do_debug = 0;
$m->Host = 'smtp.gmail.com';
$m->Username = '[email protected]';
$m->Password = 'your-password';
$m->SMTPSecure = 'ssl';
$m->Port = 465;

$m->isHTML();

$m->Subject = 'Contact Form submitted';



  $m->Body = 'From:' . $fields['name'] . '(' . $fields['email'] . ')'  . '<p><b>phone:</b><br/>' . $fields['phone'] . '</p>' . '<p><b>Message</b><br/>' . $fields['message'] . '</p>';


   $m->FromName = 'Contact';





    $m->AddAddress('[email protected]', 'Pawan');

     if ($m->send()) {


        echo 'Thank You '.$_POST["name"].' We Will Contact You Soon franchise form';
       die();
    } else {
        echo 'try again later';
    }


 }

my jquery ajax code

<script type="text/javascript">



  $(document).ready(function(){

       $('#franchisedata').on('submit',function(){

          var that=$(this),
              url=that.attr('action'),
             type=that.attr('method'),
            data={};

        that.find('[name]').each(function(index,value){

            var that=$(this),
                name=that.attr('name'),
                value=that.val();


            data[name]=value;

        });

        $.ajax({

            url:url,
            type:type,
            data:data,
            success:function(response){

                console.log(response);
                alert(response);
            }


        });

        return false;

    });
});
  </script>

the bootstrap form is the same as previously

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.