简体   繁体   English

jQuery ajax调用是否支持PATCH?

[英]Does the jQuery ajax call support PATCH?

When I send this ajax rquest: 当我发送这个ajax rquest时:

$.ajax({
            headers : {
                'Accept' : 'application/json',
                'Content-Type' : 'application/json'
            },
            url : 'http://localhost:8080/wutup/venues/12',
            type : 'PATCH',
            data : JSON.stringify({description: "842490812321309213801923 gonzagazors"}),
            success : function(response, textStatus, jqXhr) {
                console.log("Venue Successfully Patched!");
            },
            error : function(jqXHR, textStatus, errorThrown) {
                // log the error to the console
                console.log("The following error occured: " + textStatus, errorThrown);
            },
            complete : function() {
                console.log("Venue Patch Ran");
            }
        });

I receive this error: 我收到此错误:

XMLHttpRequest cannot load http ://localhost:8080/wutup/venues/12. XMLHttpRequest无法加载http:// localhost:8080 / wutup / venues / 12。 Method PATCH is not allowed by Access-Control-Allow-Methods. Access-Control-Allow-Methods不允许使用PATCH方法。

However, using curl: 但是,使用curl:

 $ curl -v -H "Accept: application/json" -H "Content-type: application/json" -X PATCH -    d' {"address": "8421 Gonzaga Ave"}'  http://localhost:8080/wutup/venues/12 

About to connect() to localhost port 8080 (#0)
Trying 127.0.0.1... connected
Connected to localhost (127.0.0.1) port 8080 (#0)
PATCH /wutup/venues/12 HTTP/1.1
User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
Host: localhost:8080
Accept: application/json
Content-type: application/json
Content-Length: 57

HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Access-Control-Allow-Origin: *
Date: Fri, 30 Nov 2012 08:14:35 GMT

Connection #0 to host localhost left intact
Closing connection #0

The $.ajax method does support HTTP PATCH. $.ajax支持HTTP PATCH。

The problem you are seeing is that the ajax method looks for PATCH in the Access-Control-Allow-Methods response header of the options preflight check . 您遇到的问题是ajax方法在选项预检检查Access-Control-Allow-Methods响应标头中查找PATCH。 Either this header is missing from your response, or the PATCH method was not included in the value of this header. 您的响应中缺少此标头,或者此标头的值中未包含PATCH方法。 In either case, the problem is in the server, not in your client-side code. 在任何一种情况下,问题都在服务器中,而不是在客户端代码中。

Here's an example using Java: 以下是使用Java的示例:

response.addHeader("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE");

Could it be your browser doesn't support the PATCH method? 可能是你的浏览器不支持PATCH方法?

Taken from jQuery AJAX API documentation : 摘自jQuery AJAX API文档

The type of request to make ("POST" or "GET"), default is "GET". 要求的类型(“POST”或“GET”),默认为“GET”。 Note: Other HTTP request methods, such as PUT and DELETE, can also be used here, but they are not supported by all browsers. 注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们。

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

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