1

我正在尝试使用 jquery 进行 ajax 删除,但收到 http 错误 400。我正在搜索,我发现 jquery 中的删除方法存在一些问题。

这是我的 js、控制器(spring 3)和来自 Chrome 的请求。

如果你现在有什么错误请告诉,或者给一些链接。

$.ajax({  
                url: 'additions/cancelUpload',  
                type: 'DELETE',  
                data: {filename : ui.draggable.get(0).file.name},  
                success: function (res) {  
                    alert(res);
                }  
            }); 

此处未通过执行:

@RequestMapping(value = "cancelUpload", produces="text/html")
    @ResponseBody
    public String cancelUpload(@RequestParam("filename")String filename, HttpSession session ){ 
... 
} 

要求:

请求网址:http://localhost:8080/WebStore/additions/cancelUpload
请求方法:删除
状态码:400 错误请求
请求标头view source
接受:*/*
接受字符集:windows-1251,utf-8;q=0.7,*;q=0.3
接受编码:gzip、deflate、sdch
接受语言:uk-UA,uk;q=0.8,ru;q=0.6,en-US;q=0.4,en;q=0.2
连接:保持活动
内容长度:17
内容类型:application/x-www-form-urlencoded
Cookie:JSESSIONID=A7DF5CB262C460961BC7B5C7DCB23052
主机:本地主机:8080
来源:http://localhost:8080
引用者:http://localhost:8080/WebStore/items?form
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1
1X-Requested-With:XMLHttpRequest

表单 Dataview URL 编码
文件名:6648.jpg

响应标头

连接:关闭
内容长度:1043
内容类型:text/html;charset=utf-8
日期:2012 年 5 月 26 日星期六 10:03:58 GMT
服务器:Apache-Coyote/1.1
X-TraceId:4fc0a8f8-46
X-TraceUrl:/insight/services/traces/4fc0a8f8-46?type=json
4

2 回答 2

2

我设法以 DELETE 的形式接收请求

 @RequestMapping(value = "cancelUpload", produces="text/html" method = RequestMethod.DELETE)

但是这样做

$.ajax({  
            url: 'additions/cancelUpload',  
            type: 'POST',  
            data: {filename : ui.draggable.get(0).file.name, _method: 'DELETE'},  
            success: function (res) {  
                alert(res);
            }  
        }); 

您可以在http://blog.springsource.org/2009/03/08/rest-in-spring-3-mvc/中阅读关于 _method: 'DELETE' 发布请求的参数

如果有人现在如何发送真正的删除 AJAX 请求。请告诉我

于 2012-05-26T18:00:52.963 回答
1

我以这种方式使用 JavaScript 发送了一个删除请求:

var delete = document.getElementById('#delete');
var url = "url";
var http = new XMLHttpRequest();    
var params = "";
delete.addEventListener('click', function() {
    http.open("DELETE", url, true);     
    http.setRequestHeader("Content-type", "application/json");
    http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            window.location = url;
        }
    }
    http.send(params);
});

以及控制器中的方法

@RequestMapping(value="url", method = RequestMethod.DELETE, produces = "application/json")
@ResponseBody
public ResponseEntity<String> delete() {
    return new ResponseEntity<String>(HttpStatus.OK);
}
于 2016-04-13T04:04:09.150 回答