Piszę JSP/servlet i próbuję dostać część kotwicą URI np:Get kotwicę z URI
blabla.rdf#mark
Jak mogę dostać mój znak z moją prośbę? Oczywiście request.getParameter()
nie działa?
Każda pomoc będzie mile widziane.
Piszę JSP/servlet i próbuję dostać część kotwicą URI np:Get kotwicę z URI
blabla.rdf#mark
Jak mogę dostać mój znak z moją prośbę? Oczywiście request.getParameter()
nie działa?
Każda pomoc będzie mile widziane.
To nie jest możliwe, ponieważ klienci nie wysyła „część kotwicy” do serwera
Jako przykład, oto dokładna wniosek, że Chrome wygenerowany po złożeniu http://example.com/#foobar
(nagrane przy użyciu Wireshark):
GET/HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.3 (KHTML, like Gecko) Chrome/4.0.223.11 Safari/532.3
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
If-None-Match: "b300b4-1b6-4059a80bfd280"
If-Modified-Since: Tue, 15 Nov 2005 13:24:10 GMT
See, nie #foobar. Więc nie ma możliwości, aby aplikacja serwera mogła go odczytać.
Możesz zrobić magię JavaScript, aby przechowywać kotwicę w ciasteczku lub ukrytym polu wejściowym lub jakimkolwiek innym voodoo. Ale nigdy nie będzie działać dla żądań, które nie pochodzą z twoich własnych stron. Łatwiej jest zrobić, co jest potrzebne na serwerze, część łańcucha zapytania i użyć zakotwiczenia tylko dla zadań tylko JavaScript - lub użyć go do nawigacji w prostym dokumencie HTML - ale tak jest w latach 90-tych;).
Oto ważna część z wspomnianym dokumencie RFC 1808:
Zauważ, że identyfikator fragment (i „#”, który poprzedza go) jest nie traktowane jako część adresu URL. Jednak ponieważ jest on powszechnie używany w tym samym kontekście ciągów co adres URL, analizator składni musi być w stanie rozpoznać fragment, gdy jest on obecny, i odłożyć go jako część procesu analizy składniowej.
Aby uzyskać więcej informacji , [RFC 1808] (http://www.ietf.org/rfc/rfc1808.txt), które wyjaśniają, dlaczego część kotwicy nie jest wysyłana na serwer. –
Rozwiązanie to działa tylko po złożyć przycisk został wciśnięty, ale: można użyć javascript, aby umieścić ukrytą wartość na formularzu, który jest ustawiony na wartość document.location. Dzięki temu dowiesz się dokładnie, co przeglądarka widzi jako Twój adres.
Wydaje mi się, że chcesz stworzyć niezwykłą aplikację Ajax i chcesz zastąpić niektóre fragmenty DOM bez przeładowania całej strony. (W przeciwnym razie możesz użyć parametrów zapytania.) Jak podaje sfussenegger, przeglądarka nie przesyła "kotwicy" na serwer. Rozwiązanie jest po stronie klienta.
Javascript window.location.hash
podaje informacje o kotwicy. Możesz dołączyć obsługi zdarzeń do zdarzenia window.onload
który chwyta window.location.hash
i przesyła je do serwera w Ajax XHttpRequest. Łapiesz odpowiedź i tworzysz ją w DOM.
Niestety, to dwa roundtrips klient-serwer.
Więcej informacji na ten temat: ajaxpatterns.
Oto podobne pytanie dla PHP, z podobnie przegłosowanymi odpowiedziami: http://stackoverflow.com/questions/1032242/how-to-obtain-anchor-part-of-url-after-in-php –