当前位置:编程学习 > JS >>

通过js获得url参数

//通过js获得URL参数值
//var url=parent.location.search;
var url=" http://www.idt.com.cn?temp=1&dd=2&aa=3";
var Request = new Object();

if(url.indexOf("?")!=-1)
{
var str = url.substr(1);

strs = str.split("&");
for(var i=0;i<strs.length;i++)
{
alert(strs[i]);
Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}

有这样两个问题:

1.

为什么str = url.substr(1),而不是直接str=url。

2

这个方法为什么得不到“?”后面的第一个参数的值,也就是temp。但是可以得到第二个以后参数,如果要得到第一个参数,怎样可以得到?

追问:我已经改好了,你的方法也不错。

//通过js获得URL参数值
//var url=parent.location.search;
var url=" http://www.163.com.cn?temp=1&dd=2&aa=3";
var Request = new Object();

if(url.indexOf("?")!=-1)//参数前的地址 http://www.163.com.cn的位数
{
var str = url.substr(url.indexOf("?")+1);

strs = str.split("&");
for(var i=0;i<strs.length;i++)
{
Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
}
}
alert(Request['temp']);
alert(Request['dd']);
alert(Request['aa']);

答案:你这个不是很正确。用下面这个

function getArgs( ) {
var args = new Object( );
var query = location.search.substring(1); // 获取?后面所有参数
var pairs = query.split("&"); // 分割

for(var i = 0; i < pairs.length; i++) {
var pos = pairs[i].indexOf('='); // 查找类似与"name=value"
if (pos == -1) continue; // 没找到
var argname = pairs[i].substring(0,pos); // 取得参数名(如name)
var value = pairs[i].substring(pos+1); // 取得值name参数的值
value = decodeURIComponent(value); // 这个是反编码如果传递的是中文并且htmlencode了就要decode一下

args[argname] = value; // 赋值

}
return args; // 返回参数集合
}

上一个:js复选框的问题
下一个:js能不能数据库连接

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,