如何用js获取当前url的参数值

发布网友 发布时间:2022-04-22 06:41

我来回答

5个回答

懂视网 时间:2022-04-20 17:52

要撮利用js获取url中参数名也参数值这个不多见了,但我今天需要这样操作,下面我来给大家介绍一下具体的实例方法。


在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到。


js的实现方法如下:

代码如下

function getValue(url, name) {
var reg = new RegExp('(?|&)' + name + '=([^&?]*)', 'i');
var arr = url.match(reg);

if (arr) {
return arr[2];
}

return null;
}

方法一:正则分析法

代码如下

function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}

这样调用:

alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));
alert(GetQueryString("参数名3"));

如果想获取所有的参数名和其对应的值,同样也可以使用正则表达式的方法,


js实现方法:

代码如下

function getKeyValue(url) {
var result = {};
var reg = new RegExp('([?|&])(.+?)=([^&?]*)', 'ig');
var arr = reg.exec(url);

while (arr) {
result[arr[2]] = arr[3];

arr = reg.exec(url);
}

return result;
}

注意在js中用于匹配的还有一个叫match,match是字符串的方法,而exec是RegExp对象的方法。使用字符串的match方法,同时正则表达式指定为全局匹配,那么正则表达式中的分组将没有用,返回的结果是所有匹配正则表达式的子字符串。exec方法没有使用全局匹配标志时,返回的时间第一个匹配的子字符,如果使用了全局匹配标志,第一次执行从头开始匹配符号的字符串,再次调用,就从上一次匹配结果后开始匹配。

下面提供php的实现方法:

代码如下

function getKeyValue($url) {
$result = array();
$mr = preg_match_all('/(?|&)(.+?)=([^&?]*)/i', $url, $matchs);

if ($mr !== FALSE) {
for ($i = 0; $i < $mr; $i++) {
$result[$matchs[2][$i]] = $matchs[3][$i];
}
}

return $result;
}

php的preg_match_all方法把匹配的结果存放在第三个指定的参数中,是一个二维数组。第一维度是分组信息的数组,即第一个数组存放的是所有匹配的完整字符串,第二个数组存放的是第一个()对应的值得,第二维度是分组的值。

热心网友 时间:2022-04-20 15:00

不太明白用JS获取参数的目的,也许Ajax中能用到吧
<script language = javascript>
function request(paras){
var url = location.href;
var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");
var paraObj = {}
for (i=0; j=paraString[i]; i++){
paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
}
var returnValue = paraObj[paras.toLowerCase()];
if(typeof(returnValue)=="undefined"){
return "";
}else{
return returnValue;
}
}
//如你给出的地址可以这样
var classid = request("classid");
var id = request("id");

//然后你就可以对这些参数处理了
</script>

热心网友 时间:2022-04-20 16:18

用js代码在本地分析得到classid和id的值总归是比较麻烦,而作为GET参数,在服务端总是要用到的。
如果你的本地js将用到这两个参数值,你可以直接让服务端将这两个值写入到本地。
<?php
$mystr="<script>x_classid=9;x_id=2</script>"
echo $mystr
?>
这样你在本地就可以直接调用x_classid和x_id以得到这两个参数。

热心网友 时间:2022-04-20 17:52

var url = "http://127.0.0.1/e/action/ShowInfo.php?classid=9&id=2";
function parse_url(_url){
var pattern = /(\w+)=(\w+)/ig;
var parames = {};
url.replace(pattern, function(a, b, c){
parames[b] = c;
});
return parames;
}

var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);

//结果 9, 2

热心网友 时间:2022-04-20 19:44

<script>
function Request(strName){
var strHref = document.location.href;
var intPos = strHref.indexOf("?");
var strRight = strHref.substr(intPos + 1);
var arrTmp = strRight.split("&");
for(var i = 0; i < arrTmp.length; i++ ) {
var arrTemp = arrTmp[i].split("=");
if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
}
return 0;
}

alert("classid值:"+Request("classid")+"id值"+Request("id"))
</script>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com