Ajax(表单提交)回调错误函数

时间:2016-05-27 23:42:35

标签: javascript php jquery ajax

我有一个"联系我们"表单,一切正常,但我的错误回调在ajax运行而不是成功。我调用ajax,PHP文件运行,我收到一封电子邮件到我的localhost(使用Mercury)。

那么为什么我的成功回调没有运行?我不知道如何找出导致错误的原因,特别是因为一切正常。

我唯一怀疑的是文件夹。目前的结构是这样的。我的html文件和php文件位于根目录中。 JS文件位于文件夹中。

以下是我按提交后Chrome调试器中的网络选项卡的屏幕截图 http://i.imgur.com/HfRYjj0.png

我的Ajax:

$(document).ready(function(e) {
    $("#main-contact-form").on('submit', (function(e) {
        e.preventDefault();
        $('#sendingemail').fadeIn();
        $.ajax({
            url : "../sendemail.php",
            type : "POST",
            data : new FormData(this),
            contentType : false,
            cache : false,
            processData : false,
            success : function(data) {
                $('#sendingemail').fadeOut();
                $('#emailsent').fadeIn();
            },
            error : function() {
                alert("Error");
            }
        });
    }));
});

我的PHP:

<?php
// ini_set('display_errors', 'On');
// error_reporting(E_ALL);

header('Content-type: application/json');

// WE SHOULD ASSUME THAT THE EMAIL WAS NOT SENT AT FIRST UNTIL WE KNOW MORE.
// WE ALSO ADD AN ATTACHMENT KEY TO OUR STATUS ARRAY TO INDICATE THE STATUS OF OUR ATTACHMENT:
/*$status = array(
 'type'=>'Error',
 'message'=>'Couldn\'t send the Email at this Time. Something went wrong',
 'attachement'=>'Couldn\'t attach the uploaded File to the Email.'
 );*/

//Added to deal with Files
require_once ('PHPMailer/class.phpmailer.php');

if (isset($_FILES['uploaded_file'])) {
    //require_once('/PHPMailer/class.smtp.php');
    //Get the uploaded file information
    $name_of_uploaded_file = basename($_FILES['uploaded_file']['name']);

    //get the file extension of the file
    $type_of_uploaded_file = substr($name_of_uploaded_file, strrpos($name_of_uploaded_file, '.') + 1);

    $size_of_uploaded_file = $_FILES["uploaded_file"]["size"] / 1024;
    //size in KBs

    //Settings
    $max_allowed_file_size = 10240;
    // size in KB
    $allowed_extensions = array("jpg", "jpeg", "gif", "bmp", "png");

    //Validations
    if ($size_of_uploaded_file > $max_allowed_file_size) {
        $errors .= "\n Size of file should be less than $max_allowed_file_size (~10MB). The file you attempted to upload is too large. To reduce the size, open the file in an image editor and change the Image Size and resave the file.";
    }

    //------ Validate the file extension -----
    $allowed_ext = false;
    for ($i = 0; $i < sizeof($allowed_extensions); $i++) {
        if (strcasecmp($allowed_extensions[$i], $type_of_uploaded_file) == 0) {
            $allowed_ext = true;
        }
    }

    if (!$allowed_ext) {
        $errors .= "\n The uploaded file is not supported file type. " . " Only the following file types are supported: " . implode(',', $allowed_extensions);
    }

    //copy the temp. uploaded file to uploads folder - make sure the folder exists on the server and has 777 as its permission
    $upload_folder = "temp/";
    $path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
    $tmp_path = $_FILES["uploaded_file"]["tmp_name"];

    if (is_uploaded_file($tmp_path)) {
        if (!copy($tmp_path, $path_of_uploaded_file)) {
            $errors .= '\n error while copying the uploaded file';
        }
    }
}
//--end

$name = @trim(stripslashes($_POST['name']));
$clientemail = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));

$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $clientemail . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

$email = new PHPMailer();

$email -> From = $clientemail;
$email -> FromName = $name;
$email -> Subject = $subject;
$email -> Body = $body;
$email -> AddAddress('root@localhost.com');
//Send to this email

// EXPLICITLY TELL PHP-MAILER HOW TO SEND THE EMAIL... IN THIS CASE USING PHP BUILT IT MAIL FUNCTION
$email -> isMail();

// THE AddAttachment METHOD RETURNS A BOOLEAN FLAG: TRUE WHEN ATTACHMENT WAS SUCCESSFUL & FALSE OTHERWISE:
// KNOWING THIS, WE MAY JUST USE IT WITHIN A CONDITIONAL BLOCK SUCH THAT
// WHEN IT IS TRUE, WE UPDATE OUR STATUS ARRAY...
if (isset($_FILES['uploaded_file'])) {
    if ($email -> AddAttachment($path_of_uploaded_file, $name_of_uploaded_file)) {
        //$status[] = 'The Uploaded File was successfully attached to the Email.';
    }
}
// NOW, TRY TO SEND THE EMAIL ANYWAY:
try {
    $success = $email -> send();
    //$status['type'] = 'success';
    $status[] = 'Thank you for contacting us. We will reply as soon as possible.';
} catch(Exception $e) {
    //$status['type'] ='Error';
    $status[] = 'Couldn\'t send the Email at this Time. Something went wrong';
}

// SIMPLY, RETURN THE JSON DATA...
die(json_encode($status));

0 个答案:

没有答案