Korzystając z window.location.href, chciałbym przekazać dane POST do nowej strony, którą otwieram. czy jest to możliwe przy użyciu JavaScript i jQuery?
javascript
jquery
Brian
źródło
źródło
window.location.href
powoduje żądanie GET dla nowego adresu URL, a nie POST.Odpowiedzi:
Przy użyciu
window.location.href
nie można wysłać żądania POST.Musisz tylko ustawić
form
tag z polami danych, ustawićaction
atrybut formularza na adres URL imethod
atrybut na POST, a następnie wywołaćsubmit
metodę naform
tagu.źródło
form
, aby wszystko było wysyłane razem automatycznie?$("#myForm").submit()
. Formularz - który będzie niewidoczny i używany tylko do przesyłania wartości z kodu po stronie klienta, a nie danych wejściowych użytkownika - nigdy nie będzie wyświetlany ani używany w inny sposób, a strona zostanie odświeżona.Dodaj formularz do kodu HTML, na przykład:
i użyj JQuery, aby wypełnić te wartości (oczywiście możesz również użyć javascript, aby zrobić coś podobnego)
Na koniec wyślij formularz
po stronie serwera powinieneś być w stanie uzyskać przesłane dane, sprawdzając,
var1
avar2
jak to zrobić, zależy od używanego języka po stronie serwera.źródło
Użyj tego pliku: „jquery.redirect.js”
zobacz https://github.com/mgalante/jquery.redirect
źródło
Jak zostało powiedziane w innych odpowiedziach, nie ma możliwości wysłania żądania POST za pomocą window.location.href, aby to zrobić, możesz utworzyć formularz i przesłać go natychmiast.
Możesz użyć tej funkcji:
https://stackoverflow.com/a/133997/2965158
źródło
Krótka odpowiedź: nie.
window.location.href
nie może przekazywać danych POST.Nieco bardziej satysfakcjonująca odpowiedź: możesz użyć tej funkcji, aby sklonować wszystkie dane formularza i przesłać je.
submitMe.importFields(form_element);
dla każdego z trzech formularzy, które chcesz przesłać.<input name="email">
in<form name="login">
, przesłana nazwa będzielogin_name
.nameJoiner
zmienną na inną niż,_
aby nie kolidowała ze schematem nazewnictwa wejściowego.submitMe.submit();
źródło
to takie proste
Musiałem to rozwiązać, aby zablokować ekran mojej aplikacji, w której musiałem przekazać poufne dane jako użytkownik i adres URL, pod którym pracował. Następnie utwórz funkcję, która wykonuje ten kod
źródło
done()
funkcjiwindow.location.href
Czy zastanawiałeś się po prostu nad użyciem magazynu lokalnego / sesji? -lub- W zależności od złożoności tego, co budujesz; możesz nawet użyć indexDB.
uwaga :
Local storage
iindexDB
nie są bezpieczne - więc chcesz uniknąć przechowywania jakichkolwiek wrażliwych / osobistych danych (tj. nazwisk, adresów, adresów e-mail, daty urodzenia itp.) w żadnym z nich.Session Storage
jest bezpieczniejszą opcją dla czegokolwiek wrażliwego, jest dostępna tylko dla źródła, które ustawia elementy, a także jest usuwane, gdy tylko przeglądarka / karta zostanie zamknięta.IndexDB
jest trochę bardziej [ale niewiele bardziej] skomplikowany i jest30MB noSQL database
wbudowany w każdą przeglądarkę (ale może być praktycznie nieograniczony, jeśli użytkownik się na to zgodzi) -> następnym razem, gdy będziesz korzystać z dokumentów Google, otwórz DevTools -> aplikacja -> IndexDB i zdobądź szczyt. [ostrzeżenie spoilera: jest zaszyfrowane].Koncentrując się na
Local
iSession Storage
; oba są bardzo proste w użyciu:Jeśli nie lubisz prostoty - lub - może chcesz zjechać z drogi i spróbować innego podejścia razem -> prawdopodobnie możesz użyć
shared web worker
... no wiesz, tylko do kopnięć.źródło
Możesz użyć GET zamiast pass, ale nie używaj tej metody dla ważnych wartości,
W CustomerBasket.php
źródło