2015-09-22 61 views
1

我试图让一个Ajax功能,可以让我的网站发送信息给我无需刷新页面。但不知何故,我不能这样做,因为每次我点击它,我在控制台收到此错误:阿贾克斯的错误:无法加载资源:服务器回应500(内部服务器错误)的状态

无法加载资源:服务器500(内部服务器错误)的状态回应。

这里是我的脚本:

$(function() { 

var form = $('#ajax-contact'); 

var formMessages = $('#form-messages'); 


$(form).submit(function(event) { 
    event.preventDefault(); 

    var formData = $(form).serialize(); 

    $.ajax({ 
     type: 'POST', 
     url: $(form).attr('action'), 
     data: formData 
    }).done(function(response) { 
     // Make sure that the formMessages div has the 'success' class. 
     $(formMessages).removeClass('error'); 
     $(formMessages).addClass('success'); 

     // Set the message text. 
     $(formMessages).text(response); 

     // Clear the form. 
     $('#name').val(''); 
     $('#email').val(''); 
     $('#message').val(''); 
    }).fail(function(data) { 
     // Make sure that the formMessages div has the 'error' class. 
     $(formMessages).removeClass('success'); 
     $(formMessages).addClass('error'); 

     // Set the message text. 
     if (data.responseText !== '') { 
      $(formMessages).text(data.responseText); 
     } else { 
      $(formMessages).text('Oops! An error occured and your message could not be sent.'); 
     } 
    }); 
}); 


}); 

这是我的PHP文件:

<?php 

// Only process POST reqeusts. 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    // Get the form fields and remove whitespace. 
    $name = strip_tags(trim($_POST["name"])); 
      $name = str_replace(array("\r","\n"),array(" "," "),$name); 
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 
    $message = trim($_POST["message"]); 

    // Check that data was sent to the mailer. 
    if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     // Set a 400 (bad request) response code and exit. 
     http_response_code(400); 
     echo "All fields must be filled."; 
     exit; 
    } 

    // Set the recipient email address. 
    // FIXME: Update this to your desired email address. 
    $recipient = "[email protected]"; 

    // Set the email subject. 
    $subject = "New Message from $name"; 

    // Build the email content. 
    $email_content = "Name: $name\n"; 
    $email_content .= "Email: $email\n\n"; 
    $email_content .= "Message:\n$message\n"; 

    // Build the email headers. 
    $email_headers = "From: $name <$email>"; 

    // Send the email. 
    if (mail($recipient, $subject, $email_content, $email_headers)) { 
     // Set a 200 (okay) response code. 
     http_response_code(200); 
     echo "Thank You! Your message has been sent."; 
    } else { 
     // Set a 500 (internal server error) response code. 
     http_response_code(500); 
     echo "Something went wrong."; 
    } 

} else { 
    // Not a POST request, set a 403 (forbidden) response code. 
    http_response_code(403); 
    echo "There was a problem with your submission, please try again."; 
} 

?> 
+0

检查网址是否正确,如果是,那么它可能是在你的服务器端 –

+0

一个问题的URL是正确的。那么我该怎么处理这个问题呢,我对此很新,对不起。 @NishithChaturvedi – Angelica

+0

告诉我们你得到的内部服务器错误没有多大帮助。查看服务器错误日志并告诉我们错误实际上是什么! – Quentin

回答

-1

你需要开始调试通过把die('test')在每行一个接一个......

从第一行开始......如果你在控制台中得到了模具按摩,然后从该行删除死亡并放在下一行......按照这个调试步骤,直到你发现PHP错误行..因为im肯定有必须在代码中的一些PHP的错误..这给500服务器错误...

0

首先猜测

邮件函数返回false,你会得到错误500页。

尝试删除http_response_code(500);

如果结果不会改变。检查Serverlogs

在这种情况下,在第二行中添加error_reporting(E_ALL);可以帮助,这取决于您的服务器配置。

+0

我尝试删除http_response_code(500);但它仍然不起作用。所以我应该把error_reporting(E_ALL);在http_response_code(500)下; ? – Angelica

+0

你明白了吗? :) – Angelica

相关问题