2013-01-23 145 views
3

我有一個頁面,使用javascript Math.random()設置一些變量,如圖所示。通過URL傳遞JavaScript變量

var RandomValue1 = Math.floor(Math.random() * 5); 
var RandomValue2 = Math.floor(Math.random() * 6); 
var string = array1[RandomValue1]; 
var string = array2[RandomValue2]; 

我想允許用戶通過URLRandomValue值傳遞給另一個人。當第二個人轉到共享URL時,RandomValue作爲第一個人的價值 - 以便第二個人看到與第一個人相同的「字符串」。

我是相當新的網頁設計和網站編程,所以我不知道這是否需要在服務器端或客戶端進行處理。

我想我需要通過一個URL像page1.html?RandomValue1=1&RandomValue2=3,但我不能讓頁面然後設置這些變量和負載。這可以在JavaScript完成嗎?

回答

1

您可以閱讀GET變量與JavaScript。下面是一個例子功能(source):

function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
    vars[key] = value; 
    }); 
    return vars; 
} 

用法:

var first = getUrlVars()["id"]; 
var second = getUrlVars()["page"]; 

alert(first); 
alert(second); 
+0

我實現了這個方法和它的工作就像一個魅力!謝謝!我將不得不調查var部分正在做什麼 - .replace(???)函數.. - 我不太明白,但我能夠從URL中獲取所需的數據。再次非常感謝! – Scott

0

我會在PHP中做到這一點。

您可以在頁面上放置隱藏字段(在表單中)。將表單方法設置爲GET並將操作設置爲另一個PHP頁面。

<form id="form" name="form" action="my_page.php" method="GET"> 
    <input id="myId" name="myName" type="hidden /> 
</form> 

在PHP頁面中,您可以使用$ _GET對象管理變量。

<?php 
    if(isset($_GET['myName'])){ 
    //do something with value; 
    } 
?> 

請記住,GET和POST變量基於HTML元素的名稱屬性。在我的示例中,隱藏字段的名稱爲myName,所以當我想引用它時,我使用的是$_GET['myName'];

0

您將需要使用服務器來協調兩個客戶端之間的數據。換句話說,第一個用戶需要將他們的隨機值提交給服務器 - 這可以使用GET URL來完成,如page1.html?RandomValue1=1,儘管您可能想要研究POST請求。

無論如何,第二用戶可以然後去共享URL看到存儲在服務器上的價值。

1

你的假設是正確的。您需要將這些變量作爲參數放入URL中。我會進一步建議使用「#」而不是實際的參數,所以你不會冒險每次更新頁面,所以URL看起來像mydomain.com/page.html#RandomValue1=1 & RandomValue2 = 3。

您可以通過window.location.href方法使用Javascript來獲取/設置這些參數。在頁面加載時,Javascript將檢查URL中是否存在「#」並解析任何內容。頁面加載後,可以使用Javascript來更新這些參數。

參見如何使用window.location的以下鏈接的完整文檔:

https://developer.mozilla.org/en-US/docs/DOM/window.location

哦,這裏是一個JavaScript庫,可以幫助讓你那裏更快。它與散列('#')一起工作,並會自動爲您分析(取消參數化)參數,並將它們分配給字符串/對象等,然後您可以使用它們。

http://benalman.com/projects/jquery-bbq-plugin/