通过URL传递JavaScript变量

时间:2013-01-23 20:48:14

标签: javascript

我有一个页面,使用javascript Math.random()设置一些变量,如图所示。

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

我想允许用户将RandomValue值通过URL传递给其他人。当第二个人转到共享URL时,RandomValue是第一个人的值 - 这样第二个人就会看到与第一个人相同的“字符串”。

我对网页设计和网络编程都很陌生,所以我不知道这是否需要在服务器端或客户端进行处理。

我假设我需要传递类似page1.html?RandomValue1=1&RandomValue2=3的网址,但我无法获取页面然后设置这些变量并加载。可以在JavaScript吗?

完成

4 个答案:

答案 0 :(得分:2)

您可以使用javascript阅读GET变量。这是一个示例函数(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);

答案 1 :(得分:1)

你的假设是正确的。您需要将这些变量作为PARAMETERS放入URL中。我建议使用“#”而不是实际参数,这样您就不会每次都更新页面,因此URL看起来像mydomain.com/page.html#RandomValue1=1&RandomValue2=3.

您可以使用Javascript通过window.location.href方法获取/设置这些参数。在页面加载时,Javascript将检查是否有“#”并在URL中解析后面的任何内容。页面加载后,可以使用Javascript更新这些参数。

有关如何使用window.location的完整文档,请参阅以下链接:

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

哦,这是一个javascript库,可能会帮助您更快地到达目的地。它与散列('#')一起使用,并将为您自动解析(取消参数化)参数,将它们分配给您可以使用的字符串/对象等。

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

答案 2 :(得分: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元素的name属性。在我的示例中,隐藏字段的名称为myName,因此当我想引用它时,我使用$_GET['myName'];

答案 3 :(得分:0)

您需要使用服务器来协调两个客户端之间的数据。换句话说,第一个用户需要将他们的随机值提交给服务器 - 这可以使用像page1.html?RandomValue1=1这样的GET URL来完成,尽管您可能想要研究POST请求。

无论如何,第二个用户可以转到共享URL以查看存储在服务器上的值。