客户端怎么模拟delete方法,请求数据
客户端如何模拟delete方法,请求数据?
在Rest接口定义中,删除数据都是使用delete方法请求,但大部分浏览器并不支持该方法请求,该如何做?
Rails使用的方法使用Post模拟delete方法
delete 方法其实是post 方法,不过在传递参数的时候,需要增加如下的字段
当然,还需要增加 csrf_param 的值,否则,该操作无法完成。
jquery_ujs的具体实现如下
在Rest接口定义中,删除数据都是使用delete方法请求,但大部分浏览器并不支持该方法请求,该如何做?
Rails使用的方法使用Post模拟delete方法
delete 方法其实是post 方法,不过在传递参数的时候,需要增加如下的字段
_method: delete所以,不要使用get请求 delete方法,需要使用post,并且带上一个额外的参数 _method=delete 即可
当然,还需要增加 csrf_param 的值,否则,该操作无法完成。
jquery_ujs的具体实现如下
// Handles "data-method" on links such as: // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a> handleMethod: function(link) { var href = rails.href(link), method = link.data('method'), target = link.attr('target'), csrf_token = $('meta[name=csrf-token]').attr('content'), csrf_param = $('meta[name=csrf-param]').attr('content'), form = $('<form method="post" action="' + href + '"></form>'), metadata_input = '<input name="_method" value="' + method + '" type="hidden" />'; if (csrf_param !== undefined && csrf_token !== undefined) { metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />'; } if (target) { form.attr('target', target); } form.hide().append(metadata_input).appendTo('body'); form.submit(); },