New Bie New Bie - 19 days ago 5
Javascript Question

Kindly Resolve the Issue in My AJAX Script For Contact Form

I am trying to achieve some AJAX Script By Which My Contact US Form Submit without Refreshing the Page

I have tried alot because i dont know where the mistake is in my AJAX Code.

This is my index.php File

<div id="response_result">
</div>

<form class="contact-form" method="POST" action="" onsubmit="return foo();" name="form" id="form_id">
<input type="text" name="contact_name" id="contact_name_id" />
<input type="text" name="contact_email" id="contact_email_id" />
<input type="text" id="contact_phone_id" name="contact_phone" />
<input type="text" id="contact_company_name_id" name="contact_company_name"/>
<input type="text" name="contact_subject" id="contact_subject_id"/>
<textarea name="contact_message" id="contact_message_id"></textarea>
<input type="submit" name="contact_submit" value="Submit Message" id="contact_submit_id" />
</form>


This is my PHP Code For That File

<?php
if(isset($_POST['contact_submit']))
{
$contact_name = $_POST['contact_name'];
$contact_email = $_POST['contact_email'];
$contact_phone = $_POST['contact_phone'];

$contact_company_name = $_POST['contact_company_name'];

$contact_subject = $_POST['contact_subject'];
$contact_message = $_POST['contact_message'];

if ((strlen($contact_message) < 5) OR (strlen($contact_message) > 500))
{
?>
<script>
alert('Your Message Should contains Characters between 5 to 500 ..... !!');
</script>
<?php
return false;
}

else if(($contact_name == "") OR ($contact_email == "") OR ($contact_phone == "") OR ($contact_company_name == "") OR ($contact_subject == "") OR ($contact_message == ""))
{
?>
<script>
alert('Please Supply Each Field .... !!');
</script>
<?php
}

else if($Object->save_contact_us_form_data($contact_name, $contact_email,$contact_phone, $contact_company_name, $contact_subject, $contact_message, $contact_date))
{
?>
<script>
alert('Data Submitted Successfully .... !!\nWe will get Back You Soon .... !!');
</script>
<?php
return true;
}

else
{
?>
<script>
alert('An Error Occured While Submitting Data .... !!');
</script>
<?php
return false;
}
}
?>


My PHP Code is Working Perfectly.

This is my AJAX Code (Not Working)

<script>
function foo()
{
var contact_name1 = document.getElementById( "contact_name_id" ).value;
var contact_email1 = document.getElementById( "contact_email_id" ).value;
var contact_phone1 = document.getElementById( "contact_phone_id" ).value;
var contact_company_name1 = document.getElementById( "contact_company_name_id" ).value;
var contact_subject1 = document.getElementById( "contact_subject_id" ).value;
var contact_message1 = document.getElementById( "contact_message_id" ).value;
$.ajax({
type: 'post',
url: 'Contact_Us.php',
data: {
contact_name:contact_name1,
contact_email:contact_email1,
contact_phone:contact_phone1,
contact_company_name:contact_company_name1,
contact_subject:contact_subject1,
contact_message:contact_message1
},
success: function (response) {
document.getElementById( "response_result" ).innerHTML = response;
}
});
}
</script>

Answer

When you submit your form with AJAX, make sure to suppress the default form submission logic using preventDefault. So your code should change to:

<form class="contact-form" method="POST" action="" name="form" id="form_id">
            <input type="text" name="contact_name" id="contact_name_id" />
            <input type="text" name="contact_email" id="contact_email_id" />
            <input type="text" id="contact_phone_id" name="contact_phone" />
            <input type="text" id="contact_company_name_id" name="contact_company_name"/>
            <input type="text" name="contact_subject" id="contact_subject_id"/> 
            <textarea name="contact_message" id="contact_message_id"></textarea>
            <input type="submit" name="contact_submit" value="Submit Message" id="contact_submit_id" /> 
</form>

<script>
   $("#form_id").on("submit", function(e)   {
        e.preventDefault();
      var contact_name1 = document.getElementById( "contact_name_id" ).value;
      var contact_email1 = document.getElementById( "contact_email_id" ).value;
      var contact_phone1 = document.getElementById( "contact_phone_id" ).value;
      var contact_company_name1 = document.getElementById( "contact_company_name_id" ).value;
      var contact_subject1 = document.getElementById( "contact_subject_id" ).value;
      var contact_message1 = document.getElementById( "contact_message_id" ).value;
      $.ajax({
         type: 'post',
         url: 'Contact_Us.php',
         dataType: 'json',
         data: {
            contact_name:contact_name1,
            contact_email:contact_email1,
            contact_phone:contact_phone1,
            contact_company_name:contact_company_name1,
            contact_subject:contact_subject1,
            contact_message:contact_message1,
            contact_submit:"Submitted"
         },
         success: function (response) {
            document.getElementById( "response_result" ).innerHTML = response;
         }
      });
   });
</script>

I have added dataType to get the result as JSON. So let you PHP send JSON. (Note: Javascript alert won't work with AJAX). Hence your PHP code is:

<?php

$err = [];

if(isset($_POST['contact_submit']))
{
    $contact_name = $_POST['contact_name'];
    $contact_email = $_POST['contact_email'];
    $contact_phone = $_POST['contact_phone'];

    $contact_company_name = $_POST['contact_company_name'];

    $contact_subject = $_POST['contact_subject'];
    $contact_message = $_POST['contact_message'];

    if ((strlen($contact_message) < 5) OR (strlen($contact_message) > 500))
    {
        $err[] = 'Your Message Should contains Characters between 5 to 500 ..... !!';
    }

    else if(($contact_name == "") OR ($contact_email == "") OR ($contact_phone == "") OR ($contact_company_name == "") OR ($contact_subject == "") OR ($contact_message == ""))
    {
        $err[] = "Please Supply Each Field .... !!";
    }

    else if($Object->save_contact_us_form_data($contact_name, $contact_email,$contact_phone, $contact_company_name, $contact_subject, $contact_message, $contact_date))
    {
        $err[] = 'Data Submitted Successfully .... !!\nWe will get Back You Soon .... !!';
    }

    else
    {
        $err[] = 'An Error Occured While Submitting Data .... !!';
    }

    echo json_encode($err);
}
Comments