Wie wird die DELETE-Methode in einem Link oder Formular angegeben?
Lesezeit: 4 Minuten
Maurício C. Antunes
Rfc2616 listet neben GET und POST viele Methoden auf, wie beispielsweise DELETE, PUT usw. Das Methodenfeld in HTML-Formularen scheint jedoch nur GET oder POST angeben zu dürfen.
Ist es möglich, einen Link oder ein Formular in einer HTML-Seite zu erstellen, die eine Anforderungsmethode verwendet, die nicht GET oder POST ist?
Siehe stackoverflow.com/questions/165779/…
– Kappen
3. August 2011 um 12:40 Uhr
Nachdem ich den vorgeschlagenen Links gefolgt bin, wäre die endgültige Antwort meiner Meinung nach: Die Verwendung von etwas anderem als GET und POST ist von einer HTML-Seite ohne Skripting nicht möglich. Obwohl HTML5 für eine Weile PUT und DELETE in Formularen erlaubte, waren diese ENTFERNT.
– Maurício C. Antunes
18. August 2011 um 20:18 Uhr
AllmächtigWarum
Ich habe versucht, dies für eine Rails-App herauszufinden, die Angular am Frontend verwendet; diese scheinen für diese Umgebung zu funktionieren:
<a data-confirm="Are you sure?" data-method="delete" href="https://stackoverflow.com/link-to-resource" rel="nofollow">Delete</a>
Bearbeiten: Nur um allen einen Hinweis zu geben, ich denke, Sie müssen immer noch jQuery haben, damit dies funktioniert. Ich habe jQuery entfernt und es funktioniert nicht mehr; Ich legte es zurück und es fing an zu arbeiten.
Dieses Verhalten stammt von jquery_ujs, das Teil von jquery-rails ist. Unauffälliges Java-Script. Es ist auch das Verhalten der Daten:{confirm: ‘do you?’}.
– Jesse Farmer
29. Juni 2017 um 22:47 Uhr
wie kann ich das gleiche in schienen reagieren
– Oshan Wisumperuma
6. September 2019 um 10:12 Uhr
@OshanWisumperuma versuchen Sie es mit so etwas wie dataMethod und dataConfirm für Requisiten. Ich habe React on Rails nicht verwendet, aber wenn ich mich richtig erinnere, verwendet React camelCased-Props für bestimmte HTML-Eigenschaften: Reactjs.org/docs/dom-elements.html Sie müssen wahrscheinlich jquery_ujs haben, damit dies funktioniert; es wäre jedoch auch trivial, fetch zu verwenden und eine HTTP-DELETE-Anforderung weiterzugeben.
– AllmächtigWarum
7. September 2019 um 4:22 Uhr
Paul D. Waite
Sie können sicherlich keinen Link erstellen, der etwas anderes als verwendet GET. Seit es HTML gibt, sollen Links idempotent und frei von Seiteneffekten sein.
Für Formulare u XMLHTTPRequestsCaps’ Link ist der richtige Ort, um nachzusehen: Sind die Methoden PUT, DELETE, HEAD usw. in den meisten Webbrowsern verfügbar?.
Das einzige Problem, dass meine Links mit Data-Method Attrib (von Rails kommend, war ein Fehler ..) POSTing sind! zumindest mit FF, Chrome und IE …
– halbes Bit
22. August 2014 um 18:22 Uhr
@halfbit: Das liegt an etwas JavaScript, das Rails enthält. Ich würde demütig vorschlagen, dass es eine schreckliche Idee ist, Links etwas anderes als ein HTTP GET machen zu lassen, insbesondere mit JavaScript.
– Paul D. Waite
22. August 2014 um 23:51 Uhr
oh ja, das habe ich schon herausgefunden (schade über mich). Ich habe vergessen, meinen Kommentar zu entfernen, weil falsch. sry nochmal
– halbes Bit
23. August 2014 um 14:31 Uhr
Andererseits klickt der größte Teil der Welt auf GET-Links, um Benutzerkonten in E-Mails zu überprüfen.
– Jonny
30. Mai 2018 um 2:26 Uhr
@Jonny: Mir ist nicht klar, was das mit meiner Antwort zu tun hat.
Das heißt, mit ein wenig JavaScript ist es möglich. Schienen zum Beispiel werden mit Helfern geliefert, die a hinzufügen data-method Attribut zu Links. Rails-UJS ist eine jQuery-Bibliothek, die Klicks auf diese Links transparent abfängt und eine Formularübermittlung mit a auslöst _method Parameter zum Überschreiben der normalen HTTP-Methode. Schließlich fängt Rack Anfragen mit a ab _method params und überschreibe die Request-Methode mit dem Wert in _method.
Andere Frameworks folgen zweifellos einem ähnlichen Muster.
Wenn Sie noch mehr Details wünschen, habe ich eine Erklärung darüber geschrieben, wie Schienen, Schienen-UJS und Rack alle arbeiten zusammen, um dies zu gewährleisten.
Es ist gut zu wissen, wie Ihre Bibliotheken funktionieren.
Ihr Link führt zu einer localhost-Website. Könntest du den Online-Artikel verlinken?
@Ifnot-Plugin ist großartig, aber ich habe eins erstellt, das auf basiert $.ajax Funktion statt Anhängen hidden Formen! Hier ist ein einfaches Beispiel für a DELETE Anfrage
Siehe stackoverflow.com/questions/165779/…
– Kappen
3. August 2011 um 12:40 Uhr
Nachdem ich den vorgeschlagenen Links gefolgt bin, wäre die endgültige Antwort meiner Meinung nach: Die Verwendung von etwas anderem als GET und POST ist von einer HTML-Seite ohne Skripting nicht möglich. Obwohl HTML5 für eine Weile PUT und DELETE in Formularen erlaubte, waren diese ENTFERNT.
– Maurício C. Antunes
18. August 2011 um 20:18 Uhr