如何从javascript变量中的url获取base64编码值

时间:2016-04-13 18:59:46

标签: javascript

嘿我想在javascript变量中从url获取值。 以下是演示网址:http://localhost/product.php?prod_id=MQ==&action=add 现在我想从url访问prod_id(MQ ==),然后对其进行解码并将其存储在javascript变量中。 任何人都可以帮我实现这个吗? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

首先,必须转义base64字符串,因为查询字符串中使用了有效的base64字符(例如=)。你可以用javascript中的escape()来做到这一点。

接下来,您需要解析查询字符串,并使用unescape()值再次获取base64字符串。解析查询字符串可能超出了此问题的范围,因为Web上有许多资源。

要解析字符串,首先从location.search中获取字符串,然后返回查询字符串(包括?)。既然你不需要'?'我建议使用.substring(1)来修剪它。接下来,你需要拆分()&符号'&'上的字符串所以你会得到一个像这样的数组: ['prod_id = MQ ==','action = add']。最后,取出该数组中的每个字符串并将其拆分为第一个'=',这将为您提供一个数组(2),其中第一个是键,第二个是值。

答案 1 :(得分:0)

这适用于现代浏览器。如果用正常函数替换箭头函数,它也可以在IE 10中工作:

function getFromQueryStringAndDecode ( query ) { 
    var base64 = location.search.substr( 1 ).split( /&/g )
      .map( x => x.split( /^([^=]*)=/ ).slice( 1 ) )
      .filter( x => x[0] === query )[0][1]
    ;
    return atob( base64 );
}

// Usage:
getFromQueryStringAndDecode( 'prod_id' ); // '1'

答案 2 :(得分:-1)

首先从url获取值到这样的php变量:

<?php
  $x = base64_decode($_GET["prod_id"]);
?>            

然后将此值保存到隐藏文本字段中,如下所示:

<input type="hidden" id="product_id" value="<?php echo $x; ?>">

然后从隐藏文本字段获取此值到javascript变量。

$(document).ready(function(){
    $value = $("#product_id").val();     
}