【问题标题】:Spring 3 jquery ajax deleteSpring 3 jquery ajax 删除
【发布时间】:2012-06-01 17:33:22
【问题描述】:

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

这是我的 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

【问题讨论】:

  • 您似乎将内容类型设置为 text/html 并且服务要求它是 application/x-www-form-urlencoded
  • 但我确实从 js 发送 Content-Type:application/x-www-form-urlencoded。并产生=“文本/html”是服务器的响应。我试着按你说的改了,但是不行。
  • 当我将请求更改为 POST 时,一切正常。
  • 尝试更改您的请求映射以包含 DELETE 方法 @RequestMapping(value = "cancelUpload",produces="text/html" method = RequestMethod.DELETE)
  • 已经做到了。仍然状态代码:400 错误请求

标签: jquery ajax spring methods


【解决方案1】:

我设法以 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'参数的post请求

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

【讨论】:

【解决方案2】:

我以这种方式使用 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多