2012-07-30 9 views
5

Mam url podobny http://www.example.com/folder/file.html#val=90&type="test"&set="none"&value="reset?setvalue=1&setvalue=45"Jak uzyskać wartość hashtagu i wartość w polu adresu URL w JavaScript?

Teraz muszę dostać część URL z począwszy od #, Jak mogę dostać, że próbowałem za pomocą window.location.search.substr(); ale wygląda na to, że szuka? w adresie URL. Czy istnieje sposób, aby uzyskać wartość URL po #

Jak mogę też dostać część URL z ampersand &

Dzięki, Michael

+0

Powodzenia @Mike? –

+0

@MatthewBlancarte nie jest żadnym skrótem do uzyskania czegoś po ampersand, jak to, co mamy dla tagu hash, jeśli nie to, co jest podejście – Mike

+0

Czy próbowałeś zaakceptowanego podejścia w linku podałem na dole mojej odpowiedzi? http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript Spowoduje to zanalizowanie ciągu zapytania. Jeśli robiłeś to po stronie serwera (np. PHP/Rails/etc.) Byłoby to znacznie prostsze. –

Odpowiedz

13
var hash = window.location.hash; 

więcej informacji tutaj: https://developer.mozilla.org/en/DOM/window.location

Aktualizacja: spowoduje pobranie wszystkich znaków po hasztagu, w tym wszelkie ciągi zapytań. Z instrukcji MOZ:

window.location.hash === the part of the URL that follows the # symbol, including the # symbol. 
You can listen for the hashchange event to get notified of changes to the hash in 
supporting browsers. 

Teraz, jeśli potrzebujesz do analizowania ciąg kwerendy, które moim zdaniem zrobić, to sprawdzić tutaj: How can I get query string values in JavaScript?

+0

Jest to sposób na uzyskanie wartości po & – Mike

+0

To jest osobne pytanie - proszę o opublikowanie go lub edytowanie bieżącego pytania. Część po '?' (Nie 'i' jest łańcuchem zapytania - zapytałeś o hash). – Utkanos

+0

@Utkanos Edytowałem teraz, proszę odpowiedzieć, jeśli znasz – Mike

0

ten dostanie wartości # i &:

var page_url = window.location + "";  // Get window location and convert to string by adding "" 
var hash_value = page_url.match("#(.*)"); // Regular expression to match anything in the URL that follows # 
var amps;         // Create variable amps to hold ampersand array 

if(hash_value)        // Check whether the search succeeded in finding something after the # 
{ 
    amps = (hash_value[1]).split("&");  // Split string into array using "&" as delimiter 
    alert(amps);       // Alert array which will contain value after # at index 0, and values after each & as subsequent indices 
} 
+0

nie można odczytać właściwości "1" o wartości null to błąd, który pojawia się, gdy uruchomię to w konsoli – Mike

+1

Ten błąd wystąpi w dowolnym momencie, gdy nie ma wartości mieszania, ponieważ zakłada się dopasowanie, nie jest sprawdzane. – Utkanos

+0

czy mógłbyś wyjaśnić swoją drugą linię kodu – Mike

5

Aby pobrać mieszania:

location.hash.substr(1); //substr removes the leading # 

do g Rab ciągu zapytania

location.search.substr(1); //substr removes the leading ? 

[edit - ponieważ wydają się mieć ciąg sortowania query-string-Esq która jest faktycznie częścią hash dodaje pobiera i przetwarza go w obiekt nazwy Pary/wartość .

var params_tmp = location.hash.substr(1).split('&'), 
    params = {}; 
params_tmp.forEach(function(val) { 
    var splitter = val.split('='); 
    params[splitter[0]] = splitter[1]; 
}); 
console.log(params.set); //"none" 
+0

location.search.substr (1); Wydaje się, że nie działa dla mnie. – Mike

+0

Dzieje się tak dlatego, że mylycie ciągi zapytań z hashe. Wydaje się, że masz ciąg znaków zapytania-esq jako część twojego hasha. Jeśli chcesz wyodrębnić * to * będziesz potrzebował jakiegoś REGEX, obsługi ciągów. Będę edytować odpowiedź. – Utkanos

Powiązane problemy