Nie jestem pewien, czy to w ogóle możliwe. Zastanawiałem się jednak, czy ktokolwiek wie, jak sprawić, by hiperłącze przechodziło przez niektóre zmienne i używało POST (jak formularz) zamiast GET.
javascript
html
http
Elliot
źródło
źródło
Odpowiedzi:
Tworzysz formularz z ukrytymi danymi wejściowymi, które przechowują wartości do opublikowania, ustawiasz działanie formularza na docelowy adres URL i metodę formularza do opublikowania . Następnie po kliknięciu linku uruchom funkcję JS, która przesyła formularz.
Zobacz tutaj przykład. W tym przykładzie użyto czystego JavaScript bez jQuery - możesz to wybrać, jeśli nie chcesz instalować niczego więcej niż już masz.
źródło
GET
? Mieliśmyget
bez formularza, prawda?Nie potrzebujesz do tego JavaScript. Chciałem tylko to wyjaśnić, ponieważ od momentu opublikowania tej odpowiedzi wszystkie odpowiedzi na to pytanie wymagają użycia JavaScript w taki czy inny sposób.
Możesz to zrobić dość łatwo za pomocą czystego HTML i CSS , tworząc formularz z ukrytymi polami zawierającymi dane, które chcesz przesłać, a następnie stylizując przycisk wysyłania formularza, aby wyglądał jak link.
Na przykład:
Dokładny styl CSS może się różnić w zależności od stylu regularnych linków w witrynie.
źródło
Możesz użyć funkcji javascript. JQuery ma wbudowaną ładną funkcję post, jeśli zdecydujesz się jej użyć:
JQuery Post
źródło
$.post('page.php', {param: 1}, function() { window.location.href = 'page'.php' });
<a href="whyjavascript.html" id="postIt">Click Here</a>
i mieć$("#postIt").on("click",function(e) { e.preventDefault(); $.post("WhateverPage.php", { name: "John", time: "2pm" } ); });
To jest stare pytanie, ale żadna z odpowiedzi nie spełnia pełnego żądania. Więc dodaję inną odpowiedź.
Żądany kod, jak rozumiem, powinien wprowadzić tylko jedną zmianę w działaniu normalnych hiperłączy:
POST
zamiast tego należy użyć metodyGET
. Bezpośrednie implikacje byłyby następujące:href
POST
Używam tutaj jquery, ale można to zrobić za pomocą natywnych apis (trudniejsze i dłuższe oczywiście).
Aby zobaczyć wynik, zapisz następujące jako reflector.php w tym samym katalogu, w którym zapisałeś powyższe.
źródło
Kolejny działający przykład, wykorzystujący podobne podejście: stwórz formularz HTML, użyj javascript do symulacji postu. Robi to 2 rzeczy: publikuje dane na nowej stronie i otwiera je w nowym oknie / karcie.
HTML
JavaScript
źródło
HTML + JQuery : link, który przesyła ukryty formularz za pomocą POST.
Ponieważ spędziłem dużo czasu na zrozumieniu wszystkich tych odpowiedzi, a ponieważ wszystkie mają kilka interesujących szczegółów, oto wersja łączona, która w końcu działała dla mnie i którą preferuję ze względu na jej prostotę.
Moje podejście polega na utworzeniu ukrytego formularza i przesłaniu go poprzez kliknięcie łącza w innym miejscu na stronie. Nie ma znaczenia, gdzie w treści strony zostanie umieszczony formularz.
Kod formularza:
Opis:
display: none
Ukrywa formularza. Możesz alternatywnie umieścić go w div lub innym elemencie i ustawićdisplay: none
na elemencie.type="hidden"
Stworzy fild że nie będą wyświetlane, ale jego dane zostaną przekazane do eitherways działania ( patrz W3C ). Rozumiem, że jest to najprostszy typ danych wejściowych.Kod linku:
Opis:
Pusty
href
jest kierowany tylko na tę samą stronę . Ale tak naprawdę nie ma to znaczenia w tym przypadku, ponieważreturn false
powstrzyma przeglądarkę przed podążaniem za linkiem. Oczywiście możesz zmienić to zachowanie. W moim konkretnym przypadku akcja zawierała przekierowanie na końcu.onclick
Użyto unikać stosowaniahref="javascript:..."
jako zauważył mplungjan .$('#myHiddenFormId').submit();
Użyto do złożenia formularza (zamiast definiowania funkcji, ponieważ kod jest bardzo małe).Ten link będzie wyglądał dokładnie tak, jak każdy inny
<a>
element. Możesz użyć dowolnego innego elementu zamiast<a>
(na przykład a<span>
lub obrazu).źródło
Możesz użyć tej funkcji jQuery
Oto przykład w jsFiddle ( http://jsfiddle.net/S7zUm/ )
źródło
Jak wspomniano w wielu postach, nie jest to bezpośrednio możliwe, ale prosty i skuteczny sposób jest następujący: Po pierwsze, umieszczamy formularz w treści naszej strony HTML, która nie zawiera żadnych przycisków do przesyłania, a także danych wejściowych są ukryte Następnie używamy funkcji javascript, aby uzyskać dane i wysłać formularz. Jedną z zalet tej metody jest przekierowanie na inne strony, które zależą od kodu po stronie serwera. Kod jest następujący: a teraz gdziekolwiek potrzebujesz być w metodzie „POST”:
źródło
Sugeruję bardziej dynamiczne podejście, bez kodowania HTML na stronie, zachowaj to ściśle JS:
źródło
Zamiast używać javascript, możesz również użyć etykiety wysyłającej ukryty formularz. Bardzo proste i małe rozwiązanie. Etykieta może znajdować się w dowolnym miejscu w html.
źródło
Sprawdź, to ci pomoże
źródło