繁体   English   中英

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

[英]jQuery $.post method results in 405 (Not Allowed) error

我有一个使用Nginx服务的网站。 我用ap标签创建了一个非常简单的网页,以显示文件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>

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM