$.ajax 发布到 PHP 文件抛出 405 方法不允许

问题描述 投票:0回答:1

我正在使用 PHP 联系表单来访问由 Digital Ocean 托管在 Nginx 上的网站。我对 PHP 完全陌生。我使用这篇文章安装了 sendmail -https://www.digitalocean.com/community/questions/php-mail-function-enable。 提交表单时出现错误 405 方法不允许。 .js 和 .php 文件都在根目录中,所以我不认为这是 CORS 问题。

contact_me.php

<?php
echo $_POST;
if(empty($_POST['name'])                ||
   empty($_POST['email'])               ||
   empty($_POST['message'])     ||
   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
   {
        echo "No arguments Provided!";
        return false;
   }
$name = $_POST['name'];
$email_address = $_POST['email'];
$message = $_POST['message'];
$to = '[email protected]';
$email_subject = "Portfolio Contact:  $name";
$email_body = "Name: $name\n\nEmail: $email_address\n\nMessage:\n$message";
$headers = "From: [email protected]" . "\r\n";
$headers .= "Reply-To: $email_address" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
mail($to,$email_subject,$email_body,$headers);
return true;                    
?>

contact_me.js

    $(function() {

    $("input,textarea").jqBootstrapValidation({
        preventSubmit: true,
        submitError: function($form, event, errors) {
            // additional error messages or events
        },
        submitSuccess: function($form, event) {
            console.log('contact_me.js submitSuccess running'); // this prints
            event.preventDefault();
            var name = $("input#name").val();
            var email = $("input#email").val();
            var message = $("textarea#message").val();
            var firstName = name;
            if (firstName.indexOf(' ') >= 0) {
                firstName = name.split(' ').slice(0, -1).join(' ');
            }
            $.ajax({
                url: "http://www.example.com/contact_me.php",
                type: "POST",
                data: {
                    name: name,
                    email: email,
                    message: message
                },
                cache: false,
                success: function() {
                console.log('ajax success function'); // doesn't print
                },
                error: function() {
                console.log('ajax error function'); // this prints
                }
            })
        },
        filter: function() {
            return $(this).is(":visible");
        }
    });

    $("a[data-toggle=\"tab\"]").click(function(e) {
        e.preventDefault();
        $(this).tab("show");
    });
});

我在尝试 PHP 之前发布到 Firebase 后端,并且 ajax 在那里工作。任何意见将是有益的。谢谢。

php ajax nginx digital-ocean http-status-code-405
1个回答
0
投票

你有没有弄清楚这一点?我有完全相同的问题

© www.soinside.com 2019 - 2024. All rights reserved.