0

我不擅长 javascript。我正在使用基于本教程的 Facebook 登录表单:

http://freecss.info/css-tutorials/jquery-ajax-contact-form-in-facebox/

错误处理工作正常。问题 = 如果没有错误,我的 header("location: index.php") 会加载到 facebox 中。

如何关闭 facebox 并重新加载页面?

4

1 回答 1

1

您需要更改响应的行为,以便您可以控制何时在成功时显示错误以及何时重定向,请检查以下更改:
sendemail.php:

<?php

/************************
* Variables you can change
*************************/

$mailto = "mikkaclarke@hotmail.com";
$cc = "";
$bcc = "";
$subject = "Email subject";
$vname = "BrightCherry enquiry";


/************************
* do not modify anything below unless you know PHP/HTML/XHTML
*************************/


$email = $_POST['email'];
$resp['error'] = FALSE; // by default there are no errors

function validateEmail($email)
{
   if(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,3})?(\.[a-zA-Z]{2,3})?$', $email))
      return true;
   else
      return false;
}


if((strlen($_POST['name']) < 1 ) || (strlen($email) < 1 ) || (strlen($_POST['message']) < 1 ) || validateEmail($email) == FALSE){
    $resp['error'] = TRUE;
    $emailerror .= 'Error:';

    if(strlen($_POST['name']) < 1 ){
        $emailerror .= '<li>Enter name</li>';
    }

    if(strlen($email) < 1 ){
        $emailerror .= '<li>Enter email</li>';
    }

    if(validateEmail($email) == FALSE) {
        $emailerror .= '<li>Enter valid email</li>';
    }

    if(strlen($_POST['message']) < 1 ){
        $emailerror .= '<li>Enter message</li>';
    }
    $err = "<div id='emailerror'><ul>$emailerror</ul></div>";
    $resp['error_msg'] = $err;
} else {
    $emailerror .= "<span>Your email has been sent successfully!</span>";



    // NOW SEND THE ENQUIRY

    $timestamp = date("F j, Y, g:ia");

    $messageproper ="\n\n" .
        "Name: " .
        ucwords($_POST['name']) .
        "\n" .
        "Email: " .
        ucwords($email) .
        "\n" .
        "Comments: " .
        $_POST['message'] .
        "\n" .
        "\n\n" ;

        $messageproper = trim(stripslashes($messageproper));
        mail($mailto, $subject, $messageproper, "From: \"$vname\" <".$_POST['e_mail'].">\nReply-To: \"".ucwords($_POST['first_name'])."\" <".$_POST['e_mail'].">\nX-Mailer: PHP/" . phpversion() );

}
echo json_encode($resp);
?>

还有你ajaxForm的联系人和索引(我不知道你为什么需要它):

$('#submitform').ajaxForm({
    dataType: 'json',
    success: function(resp) {
        if(resp.error)
            $('#error').html(resp.error_msg).fadeIn('slow');
        else
            window.location = 'index.php';
    }
});

我所做的如下:

  1. 验证表单并将结果回显为json
  2. 如果有错误,设置错误标志和错误信息
  3. 否则只需将错误标志设置为 false
  4. 在您的成功方法中,如果您将错误标志设置为 true,则显示错误
  5. 否则重定向!
于 2011-01-12T10:44:02.677 回答