您的位置:首页 > 其它

客户端如何模拟delete方法,请求数据?

2012-08-31 11:34 716 查看
在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();
    },
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐