2011-10-12 3 views
0

recaptcha를 사용하는 기본 문의 양식이 있으며 다소 유용합니다. 필드 유효성 검사, captcha 유효성 검사가 있고 그것은 내 DB에 게시하지만 내 페이지가 INSERT 후에 새로 고칩니다. 여기 내 JS가있다 : 여기페이지를 새로 고침하지 않고 ajax를 사용하여 mysql 테이블에 데이터 삽입

function validateCaptcha() 
{ 
    challengeField = $("input#recaptcha_challenge_field").val(); 
    responseField = $("input#recaptcha_response_field").val(); 

    var html = $.ajax({ 
     type: "POST", 
     url: "ajax.recaptcha.php", 
     data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField, 
     async: false 
    }).responseText; 

    if(html == "success") { 
     processForm(); 
    } else { 
     $('#wrongCaptcha').fadeIn().delay('5000').fadeOut(); 
     return false; 
    } 
} 

function processForm(){ 
    var contactForm = $('#contactUsForm'); 
    if (!$('#senderName').val() || !$('#senderEmail').val() || !$('#senderComments').val()) { 
     ('#incompleteMessage').fadeIn().delay('5000').fadeOut(); 
    } else { 
     var answer = $.ajax({ 
       url: "processContact.php?ajax=true", 
       type: contactForm.attr('method'), 
       data: contactForm.serialize(), 
       async: false, 
       success: submitFinished 
      }); 
    } 
} 

function submitFinished(response) { 
    response = $.trim(response); 
    if (response == "success") { 
     //$('#successMessage').fadeIn().delay('2000').fadeOut(); 
     $('#senderName, #senderEmail, #senderComments').val(""); 
     return false; 
    } else { 
     alert('errororoer'); 
     //$('#failureMessage').fadeIn().delay('5000').fadeOut(); 
    }  
} 

을 그리고 내 PHP의

define("RECIPIENT_NAME", "Chris Tate"); 
define("RECIPIENT_EMAIL", "[email protected]"); 
define("EMAIL_SUBJECT", "Visitor Message"); 

// Read the form values 
$success = false; 

$senderName = isset($_POST['senderName']) ? preg_replace("/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName']) : ""; 
$senderEmail = isset($_POST['senderEmail']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail']) : ""; 
$senderComments = isset($_POST['senderComments']) ? preg_replace("/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['senderComments']) : ""; 

// If all values exist, send the email 
if ($senderName && $senderEmail && $senderComments) { 

    $senderName = mysql_real_escape_string($senderName); 
    $senderEmail = mysql_real_escape_string($senderEmail); 
    $senderComments = mysql_real_escape_string($senderComments); 

    $con = mysql_connect('localhost', 'root', 'root'); 

    if(!$con) { $success = "error"; } 

    mysql_select_db('mf_db', $con); 
    $sql="INSERT INTO emailData (senderName, senderEmail, senderComments) VALUES ('$senderName', '$senderEmail', '$senderComments')"; 

    if(!mysql_query($sql,$con)) { 
     $success = "error"; 
    } else { 
     $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">"; 
     $headers = "From: " . $senderName . " <" . $senderEmail . ">"; 
     $success = mail($recipient, EMAIL_SUBJECT, $senderComments, $headers); 
    } 

    mysql_close($con); 
} 


if (isset($_GET["ajax"])) { 
    echo $success ? "success" : "error"; 
} else { ... I cut the rest off b/c it's just some html. 

답변

0

이처럼 JQuery와 아약스의 typeasync 부분을 편집 해보십시오 :

var answer = $.ajax({ 
    url: "processContact.php?ajax=true", 
    type: "post", 
    data: contactForm.serialize(), 
    async: true, 
    success: submitFinished 
}); 

실행중인 불을 지르고?

+0

둘 다 작동하지 않습니다. ( – Chris

+2

나는 지치고, 정말로, 매우 지쳤습니다. 버튼 대신 제출을 사용했습니다 ... # sleepyProgramming Thanks – Chris

관련 문제