405错误与Ajax POST / Nginx配置相关。

8 浏览
0 Comments

405错误与Ajax POST / Nginx配置相关。

我尝试使用Ajax表单和Swiftmailer发送电子邮件。在本地工作,在生产环境中不起作用。

当contact_me.php不是从表单中获取参数,而是明确写入时,电子邮件甚至可以从服务器发送,因此我认为Swiftmailer正在工作。

contact_me.js

// Contact Form Scripts
$(function() {
    $("#contactForm input,#contactForm textarea").jqBootstrapValidation({
        preventSubmit: true,
        submitError: function($form, event, errors) {
            // additional error messages or events
        },
        submitSuccess: function($form, event) {
            event.preventDefault(); // prevent default submit behaviour
            // get values from FORM
            var name = $("input#name").val();
            var email = $("input#email").val();
            var phone = $("input#phone").val();
            var message = $("textarea#message").val();
            var firstName = name; // For Success/Failure Message
            // Check for white space in name for Success/Fail message
            if (firstName.indexOf(' ') >= 0) {
                firstName = name.split(' ').slice(0, -1).join(' ');
            }
            $.ajax({
                url: "././mail/contact_me.php",
                type: "POST",
                data: {
                    name: name,
                    phone: phone,
                    email: email,
                    message: message
                },
                dataType: "text",
                cache: false,
                success: function() {
                    // Success message       
                },
                error: function() {
                    // Fail message                    
                },
            });
        },
        filter: function() {
            return $(this).is(":visible");
        },
    });
    $("a[data-toggle=\"tab\"]").click(function(e) {
        e.preventDefault();
        $(this).tab("show");
    });
});
/*When clicking on Full hide fail/success boxes */
$('#name').focus(function() {
    $('#success').html('');
});

contact_me.php


admin 更改状态以发布 2023年5月23日
0
0 Comments

Nginx服务器不允许POST请求使用静态页面(即*.html)。

有一些技巧来解决这个问题。在我的情况下,它解决了405错误,但电子邮件没有发出。

解决方案是将index.html更改为index.php,务必调整您的Nginx配置以反映这些更改。

0