PHP/Ajax联系人表单仅在成功时清除输入字段

PHP/Ajax联系人表单仅在成功时清除输入字段,php,ajax,forms,validation,contact,Php,Ajax,Forms,Validation,Contact,我有一个简单的带有验证的php/ajax联系人表单。我想在有效提交后清除所有字段,因此我尝试了$(“#myform”)[0].reset();请参见下面代码中的。它很好地清除了表单,但问题是当验证失败时,它也会清除所有内容,这真的很烦人 以下是HTML: <form id="myform" method="post" action="sendEmail.php"> <div id="container"> <div id="main"> &

我有一个简单的带有验证的php/ajax联系人表单。我想在有效提交后清除所有字段,因此我尝试了$(“#myform”)[0].reset();请参见下面代码中的。它很好地清除了表单,但问题是当验证失败时,它也会清除所有内容,这真的很烦人

以下是HTML:

<form id="myform" method="post" action="sendEmail.php">

<div id="container">
    <div id="main">

    <p>Name / Company <span>*</span></p> 
    <input type="text" name="name" id="name" />

    <p>Email Address <span>*</span><p> 
    <input type="text" name="email" id="email" />

    <p>Offer / Message <span>*</span></p> 
    <textarea name="message" id="message" rows="6"></textarea>  

    <p><input type="submit" name="submit" id="submit" value="Send Request" /></p>

    <p><ul id="response" /></p>

    </div>
</div>

名称/公司*

电子邮件地址* 优惠/信息*

而php:

<?php

$name = trim($_POST['name']);
$email = $_POST['email'];
$message = $_POST['message'];

$site_owners_email = 'sample@yahoo.com'; 
$site_owners_name = 'Joe';

if (strlen($name) < 3) {
    $error['name'] = "* Please enter your name.";   
}

if (!preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) {
    $error['email'] = "* Please enter a valid email address";   
}

if (strlen($message) < 4) {
    $error['message'] = "* Please leave an offer / message.";
}

if (!$error) {

    require_once('phpMailer/class.phpmailer.php');
    $mail = new PHPMailer();

    $mail->From = $email;
    $mail->FromName = $name;
    $mail->Subject = "Subject"; 
    $mail->AddAddress($site_owners_email, $site_owners_name);
    $mail->Body = $message;

    $mail->Send();

    echo "<li class='success'> Thanks for your request!<br> We will respond to you as soon as possible. </li>";

} # end if no error
else {

    $response = (isset($error['name'])) ? "<li>" . $error['name'] . "</li> \n" : null;
    $response .= (isset($error['email'])) ? "<li>" . $error['email'] . "</li> \n" : null;
    $response .= (isset($error['message'])) ? "<li>" . $error['message'] . "</li>" : null;

    echo $response;
} # end if there was an error sending

好的,一个好主意是从PHP返回一个JSON对象,这样您就可以检查Javascript上的错误

PHP:


谢谢你的快速回复,但正如我所说,我是jquery新手,所以你能告诉我,我应该把你建议的代码放在我的代码中的什么地方吗?jquery代码必须放在和标记之间的头部
$(function() {

var paraTag = $('input#submit').parent('p');
$(paraTag).children('input').remove();
$(paraTag).append('<input type="button" name="submit" id="submit" value="Send Request" />');

$('#main input#submit').click(function() {
    $('#main').append('<img src="images/ajax-loader.gif" class="loaderIcon" alt="Loading..." />');

    var name = $('input#name').val();
    var email = $('input#email').val();
    var message = $('textarea#message').val();

    $.ajax({
        type: 'post',
        url: 'sendEmail.php',
        data: 'name=' + name + '&email=' + email + '&message=' + message,

        success: function(results) {
            $('#main img.loaderIcon').fadeOut(1000);
            $('ul#response').html(results);
            $("#myform")[0].reset();

        }
    }); // end ajax
});
$result = array(
            "error" => false, 
            "html" => null
);
if(!$is_valid){
    $result["error"] = true;
    $result["html"] = "<b>Error</b>";
}else{
    $result["error"] = false;
    $result["html"] = "<b>Success</b>";
}
echo json_encode($result);
$.ajax({
    type: 'post',
    url: 'url.php',
    data: {/*put a cool data here*/},
    dataType : "json", // return a json object

    success: function(result) {
        if(result.error){
            /* On error stuff */
            $("body").append(result.html);
        }else{
            /* On success stuff */
            $("body").append(result.html);
        }
    }
});