无法提交表格

时间:2014-03-04 03:37:25

标签: javascript php jquery forms submission

我希望有人可以查看我的代码,让我知道发生了什么。我有一张表格。当它被提交时,弹出窗口出现并告诉我它失败了,我得到一个只是说“未定义”的页面。任何人都对A有任何想法:为什么发送失败?B:我需要修改我的JavaScript以使页面在提交后返回主页。

HTML:

<div class="contact-form">
        <p class="mandatory">* indicates Manadatory Field</p>
        <div data-role="fieldcontain" class="text-field">
            <label for="firstname">First Name*:</label>
            <input type="text" name="firstname" value="" placeholder=""     class="required" id="firstname" />
        </div>
        <div data-role="fieldcontain" class="text-field">
            <label for="surname">Last Name:</label>
            <input type="text" name="surname" value="" placeholder="" id="surname" />
        </div>
        <div data-role="fieldcontain" class="text-field">
            <label for="email">Email Address*:</label>
            <input type="email" name="email" value="" placeholder=""     class="required" id="email"  />
        </div>
        <div data-role="fieldcontain" class="text-field">
            <label for="mobilephone">Mobile Number:</label>
            <input type="number" name="mobilephone" value="" placeholder="" id="mobilephone" />
        </div>    

<div data-role="fieldcontain">
<label for="message">Message*:</label>
<textarea name="message" id="message" placeholder="" class="required"></textarea>
</div>
<div class="send"><a href="javascript.js" data-role="button" data-theme="a" data-    iconpos="right" id="send-feedback">Send Message</a></div>

JAVASCRIPT

 $(function () {
     $("#symptomsemployersbutton").click(function () {
         $("#symptomsemployers").toggle("slow");
     });
 });

 $('#send-feedback').live("click", function () {
     var url = 'submit.php';
     var error = 0;
     var $contactpage = $(this).closest('.ui-page');
     var $contactform = $(this).closest('.contact-form');
     $('.required', $contactform).each(function (i) {
         if ($(this).val() === '') {
             error++;
         }
     }); // each
     if (error > 0) {
         alert('Please fill in all the mandatory fields. Mandatory fields are marked with an asterisk *.');
     } else {
         var firstname = $contactform.find('input[name="firstname"]').val();
         var surname = $contactform.find('input[name="surname"]').val();
         var mobilephone = $contactform.find('input[name="mobilephone"]').val();
         var email = $contactform.find('input[name="email"]').val();
         var message = $contactform.find('textarea[name="message"]').val();

         //submit the form
         $.ajax({
             type: "GET",
             url: url,
             data: {
                 firstname: firstname,
                 surname: surname,
                 mobilephone: mobilephone,
                 email: email,
                 message: message
             },
             success: function (data) {
                 if (data == 'success') {
                     // show thank you 
                     $contactpage.find('.contact-thankyou').show();
                     $contactpage.find('.contact-form').hide();
                 } else {
                     alert('Unable to send your message. Please try again.');
                 }
             }
         }); //$.ajax

     }
     return false;
 });

PHP

<?php 
header('content-type: application/json; charset=utf-8');

if (isset($_GET["firstname"])) {
$firstname = strip_tags($_GET['firstname']);
$surname = strip_tags($_GET['surname']);
$email = strip_tags($_GET['email']);
$mobilephone = strip_tags($_GET['mobilephone']);
$message = strip_tags($_GET['message']);
$header = "From: ". $firstname . " <" . $email . ">rn"; 

$ip = $_SERVER['REMOTE_ADDR']; 
$httpref = $_SERVER['HTTP_REFERER']; 
$httpagent = $_SERVER['HTTP_USER_AGENT']; 
$today = date("F j, Y, g:i a");    

$recipient = 'mark@launchintervention.com';
$subject = 'Contact Form';
$mailbody = "
First Name: $firstname   
Last Name: $surname 
Email: $email 
Mobile Phone: $mobilephone 
Message: $message

IP: $ip
Browser info: $httpagent
Referral: $httpref
Sent: $today
";
$result = 'success';

if (mail($recipient, $subject, $mailbody, $header)) {
    echo json_encode($result);
}
}
?>

1 个答案:

答案 0 :(得分:0)

您的条件语句永远不会在您的成功函数中触发,因为它始终是错误的。 (data == 'success')永远不会起作用,因为该字符串的json编码返回值"success"而不是success。我不知道为什么你是json编码它,但你应该做其他的事情,如

$result = array(
    'status' => 'success'
);
echo json_encode($result);

然后你可以做

(data.status == 'success')

在结果返回成功后重定向,在以下行之后:

$contactpage.find('.contact-form').hide();

您应该执行以下操作:

setTimeout(function(){
    window.location = 'mydomain.tld/my-homepage.ext';
}, 5000);

您的contact-thankyou类元素应该包含某些类型的文字,例如“我们已收到您的提交。您将在5秒后重定向到主页。”然后在5秒后,它们将根据先前定义的setTimeout函数重定向。

您在标头声明的末尾还有一个rn,我假设它应该是\r\n,但是您不会继续连接标头,因此不需要它。 Please review the RFC2822 on this