2011-08-03 6 views
16

Rfc2616은 GET 및 POST 외에도 DELETE, PUT 등과 같은 많은 메소드를 나열합니다. 그러나 HTML 양식의 메소드 필드는 GET 또는 POST 만 지정할 수 있습니다.링크 또는 양식에서 DELETE 메서드를 지정하는 방법은 무엇입니까?

GET 또는 POST가 아닌 요청 방법을 사용하는 HTML 페이지에서 링크 또는 양식을 만들 수 있습니까?

+1

입니다 http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers – Caps

+2

제안 된 링크를 따른 후 명확한 대답은 다음과 같을 것입니다. 스크립팅하지 않고 HTML 페이지에서 GET 및 POST를 제외한 다른 것을 사용하는 것은 불가능합니다. html5는 잠시 동안 양식에서 PUT 및 DELETE를 허용했지만 [삭제]되었습니다 (http://goo.gl/8EuZk). –

답변

10

GET 이외의 것을 사용하는 링크는 만들 수 없습니다. HTML이 시작된 이래로 링크는 멱등수가되고 부작용이 없습니다.

양식과 XMLHTTPRequests의 경우 캡의 링크는보실 곳이 Are the PUT, DELETE, HEAD, etc methods available in most web browsers?입니다.

+0

유일한 문제는 데이터 - 메소드 attrib (레일에서 오는 오류, ..)와의 나의 링크가 POSTing입니다! 적어도 FF, 크롬 및 IE와 함께 ... – halfbit

+0

@ halfbit : [레일스에 포함 된 일부 JavaScript] 때문입니다. (http://stackoverflow.com/questions/2809200/how-does-rails-3s-data-method- delete-degrade-gracefully). 저는 링크가 HTTP GET 이외의 다른 것들, 특히 자바 스크립트를 사용하도록 만드는 것은 끔찍한 생각이라고 겸허하게 제안합니다. –

+0

오, 그래, 나는 그걸 알았어. (나에 대한 수치심). 내 코멘트를 삭제하는 것을 잊어 버렸습니다. 왜냐하면 false입니다. 다시 시도하십시오 – halfbit

-4

<a data-method='put' href='whatever'>link</a>

+2

이 문서가 정확하면 어떤 종류의 문서로도 링크 할 수 있습니까? – Jarl

+0

이 답변은 매우 모호하고 제공된 정보를 기반으로하기 때문에 Downvoted는 잘못되었습니다. 나는 그것이 얼마나 많은 수의 upvote를 얻었는지 잘 모르겠습니다. – Simon

+0

어쩌면 애매하지만 실제로 올바른 것이므로 득표를해야합니다. 위의 질문에서, 다음과 같이 사용할 수 있습니다. 'DeleteMe' – Aleks

2

링크를 만들거나 삭제하는 방법으로 형성 할 수 없습니다, 데이터-method 속성을 추가 할 수 있습니다.

많은 웹 프레임 워크는 PUT 및 DELETE를 처리하기 위해 "_method"라는 숨겨진 입력을 만듭니다. https://github.com/Ifnot/RestfulizerJs

12

프런트 엔드에 각도 사용 된 레일 앱이 알아 내려고 노력했다 : 당신은 여기 좀 걸릴 수 있습니다

RestfulizerJs :

나는 자동으로 양식에 대한 링크를 변환하기위한 플러그인을 생성 ; 다음은 환경에 작동하는 것 같다 :

<a data-confirm="Are you sure?" data-method="delete" href="/link-to-resource" rel="nofollow">Delete</a> 

편집 : 그냥 모든 사람에게 머리를주고, 당신이 여전히 작동 할 jQuery를 가질 필요가 있다고 생각합니다. jQuery를 제거하고 작동을 멈췄다. 나는 그것을 되돌려 놓고 일하기 시작했다.

+0

이 동작은 jquery-rails의 일부인 jquery_ujs에서옵니다. 눈에 잘 띄지 않는 Java 스크립트. 데이터도 마찬가지입니다. {확인 : 'do you?'} 행동입니다. –

6

기본적으로 이렇게 할 방법이 없습니다. 링크 always perform GETs, forms can use GETs or POSTs.

그렇긴해도 약간의 JavaScript로 가능합니다. 예를 들어 레일즈는 링크에 data-method 속성을 추가하는 도우미와 함께 배송됩니다. Rails-UJS는 이러한 링크의 클릭을 투명하게 가로 채고 일반 HTTP 메소드를 대체하는 데 사용되는 _method 매개 변수를 사용하여 양식 제출을 트리거하는 jQuery 라이브러리입니다. 마지막으로 Rack은 _method 매개 변수로 요청을 가로 채고 _method의 값으로 요청 방법을 덮어 씁니다.

다른 프레임 워크는 틀림없이 비슷한 패턴을 따릅니다.

자세한 내용을 보려면 Rails, Rails-UJS, and Rack이 모두 어떻게 작동하는지에 대한 설명을 작성했습니다.

라이브러리 작동 방법을 알고 있으면 좋습니다.

+0

귀하의 링크는 localhost 웹 사이트로 연결됩니다. 온라인 기사에 링크 할 수 있습니까? –

+0

http://www.monkeyandcrow.com/blog/reading_rails_http_delete_with_a_link/ – dtburgess

1

@Ifnot 플러그인은 훌륭하지만 hidden 폼을 추가하는 대신 $.ajax 함수를 기반으로 만들었습니다!여기 DELETE 요청

HTML

<button class="delete" data-target="http://example.com/post/post-id/" data-method="DELETE" data-disabled="true">Delete Article</button> 

에 대한 간단한 예는 자바 스크립트

$(".delete").restintag(optionsObj, function(data) { 
    console.log(data); 
}, 
function(error) { 
    console.log(error); 
}); 

https://github.com/KhaledElAnsari/RESTInTag/