2013-02-02 22 views
2

我對HTML(以及一般編程)相對比較陌生,並且我試圖聲明一個變量併爲它賦值我導航到一個頁面。我所擁有的是這樣的代碼行:在URL中聲明一個變量並在瀏覽頁面時爲它賦值Javascript

function() navigate {window.location = "myPage.html?myVar=1";} 

當我運行的功能,新的頁面將加載,但每當我嘗試訪問變量,我得到一個錯誤說的變量是不確定的。但是,如果我在新頁面中定義變量(例如<script>var myVar;</script>),則該值將設置爲空值,而不是我在之前使用的導航函數中設置的值。

我想不出任何解決方案,我的錯誤可能源於我對網址末尾的?如何工作的誤解,但我無法找到它在任何地方工作的良好解釋。

+3

URL中的查詢參數與JavaScript無關。它們主要用於由服務器處理。你可以通過JavaScript訪問它們,看看http://stackoverflow.com/questions/979975/how-to-get-the-value-from-url-parameter。網址,HTML和JavaScript是三項獨立技術。 –

回答

0

查詢字符串變量用於傳遞數據到服務器時,我們請求一個頁面,但是你可以使用JavaScript仍然可以訪問他們,結帳這個#1問題How can I get query string values in JavaScript?

+0

感謝您的快速響應。您發給我的鏈接上的答案對我來說似乎有點複雜,但我會試一試。 –

+0

@JakeChristensen是的,你試圖做的是有點複雜,但它不像看起來雖然;但 –

+0

好吧,我忽略了所有複雜的東西,只是使用location.search。我會寫我自己的函數,以便從字符串中獲取值。再次感謝。 –

0

函數寫入不正確。檢查您的JavaScript控制檯是否有錯誤。下面是如何編寫函數在JavaScript上午例如:

var navigate = function() { window.location = "myPage.html?myVar=1"; } 

OR

function navigate() { window.location = "myPage.html?myVar=1"; } 

我小心的話,這個名字navigate太一般了。我會把它命名爲navigateToMyPage

我重讀了這個問題,並意識到您正在尋找一種方法從url中獲取參數。

你會想要做這樣的事情:

var navigateToMyPage = function() { window.location = "myPage.html?" + location.search; } 

這裏有一個相關的問題及解決方法: How to get the value from the GET parameters?

OR

如果你想傳遞一個javascript變量值你可以這樣做:

var myVar = 1 + 1; 
    var navigateToMyPage = function() { window.location = "myPage.html?myVar=" + myVar; } 

祝你好運!

0

查詢字符串 - 在客戶端並在服務器端

query string不會自動處理爲由JavaScript,這是客戶端腳本語言的變量。這通常由服務器端腳本語言完成,如PHP。

例如,在PHP的服務器端,在這種情況下,通常會將查詢字符串值自動分配給$_GET陣列或$_GET['myVar']。但在Javascript中,情況並非如此,您需要自己處理查詢字符串。

的片段標識符 - 傳遞URL值的Javascript

在Javascript中,最常用的方法通過URL傳遞值實際上是通過fragment identifier通過query string

例如,可以傳遞像這樣兩個變量:

myPage.html#myVar=1&myOtherVar=2 

在JavaScript的location.hash變量將被自動分配的值#myVar=1&myOtherVar=2它可以這樣進一步處理:

var location_vars = []; 
var location_vars_temp = location.hash.replace('#',''); // Remove the hash sign 
location_vars_temp  = location_vars_temp.split('&'); // Break down to key-value pairs 
for (i=0; i < location_vars_temp.length; i++) { 
    location_var_key_val = location_vars_temp[i].split('='); // Break down each pair 
    location_vars[location_var_key_val[0]] = location_var_key_val[1]; 
} 

在這一點location_vars將會是一個填充了傳遞值的數組,您將能夠使用location_vars['myVar']location_vars['myOtherVar']location_vars['myOtherVar']來引用它們

相關問題