不允许使用IE 11 $ .ajax PUT方法

时间:2017-05-09 13:00:41

标签: jquery ajax asp.net-mvc put

在我的编辑页面上,我使用的是api控制器。

这是我的$ .ajax:

var settings = {};
settings.baseUri = '@Request.ApplicationPath';
var infoGetUrl = "";
if (settings.baseUri === "/ServerProjectName") {
    infoGetUrl = settings.baseUri + "/api/controllerName/";
} else {
    infoGetUrl = settings.baseUri + "api/controllerName/";
}

$("#Edit-Btn").on("click",
    function(e) {
        $("form").validate({
            submitHandler: function() {
                e.preventDefault();

                $.ajax({
                    method: "PUT",
                    url: infoGetUrl,
                    data: $("form").serialize(),
                    success: function(data) {
                        toastr.options = {
                            onHidden: function() {
                                window.location.href = newUrl;
                            },
                            timeOut: 3000
                        }
                        toastr.success("Successfully edited.");
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        var status = capitalizeFirstLetter(textStatus);

                        toastr.error(status + " - " + jqXHR.responseText);
                    }
                });
            }
        });
    });

这个方法下面是'DELETE'的另一个ajax函数,它完美地运行。只有PUT方法给我这个错误。

当我提交时,我收到一条错误消息:

  

请求的资源不支持http方法'PUT'

我看过this但不太了解。我正在使用IE 11,所以我认为它应该得到支持。

非常感谢任何想法或帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

您收到此消息的原因是您尝试使用的API不支持HTTP PUT方法。

通常情况下,如果您使用的是web api 2.0,那么如果支持PUT,则您的网络方法的属性为[HttpPut]。还有其他方法可以标记API以支持Put,但通常不使用。

确认您的API是问题的最简单方法是使用Postman尝试使用该API,并消除您使用javascript时可能遇到的任何问题。