jQuery $ .post方法导致405(不允许)错误

时间:2019-01-04 22:18:25

标签: javascript ajax

我有一个使用Nginx服务的网站。我创建了一个非常简单的带有p标记的网页,以显示文件test.html的内容。我有两个按钮,一个按钮使用$ .ajax进行GET请求,另一个按钮使用$ .post进行POST请求。

GET请求工作正常,文件test.html的内容显示在我的p标签中。但是,当我尝试POST到同一文件时,控制台中出现错误:“无法加载资源:服务器响应状态为405(不允许)。” POST请求非常简单,直接取自W3Schools.com-https://www.w3schools.com/JQuery/jquery_ajax_get_post.asp上的示例。所以我感到困惑。

我试图阅读并理解405错误可能意味着什么。大概意味着这URL不支持POST请求。但是如何使它得到支持?

    <p id="content-from-ajax"></p>

    <button id="get-content-btn">Get Content</button>

    <button id="post-something-btn">Post something</button>

    <script type="text/javascript">
        $("#get-content-btn").click(function() {
            $.ajax({type: "GET", 
                    url: "test.html", 
                    success: function(result) {
                        $("#content-from-ajax").html(result);
                        alert("GET successful");
                    }
                   });
        });

        $("#post-something-btn").click(function(){
            alert("GRRRR");
            $.post("test.html",
                   {
                name: "Donald Duck",
                city: "Duckburg"
            },
                   function(data, status){
                alert("something worked");
            });
        });
    </script>

1 个答案:

答案 0 :(得分:0)

对于POST请求以访问Web服务器上托管的资源,您将需要一个应用程序服务器。示例包括适用于PHP的Laravel,适用于Java的Spring和适用于JavaScript的Node。

许多应用程序服务器要求您明确指定特定端点可以接收的请求类型,这在学习新的Web应用程序框架时可能会造成混淆,因为GET请求通常是默认请求。

尽管POST请求必须由应用程序服务器处理,但不必成为您的托管服务器。因此,您可以通过POST请求访问公共API(取决于您使用的API和端点),而无需在应用程序服务器上托管站点。因此,如果这个项目纯粹是教育性的,那么这是使用POST请求进行测试的最佳方法,而无需麻烦自己进行配置。