关于JS获取URL后携带参数,遇到了一写小问题,求高手指点一二。
问题是这样的,先写了一个最普通的JS脚本,代码如下:function getString(){
var url = location.search;
var therequest = new Object();
if(url.indexOf("?")!= -1){
var str = url.substr(1);
strs = str.split("&");
for(var i = 0;i<strs.length,i++){
therequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return therequest;
} 接下来可以获取到正常的参数,但是今天遇到的参数有些特殊,附带的参数里面就有等于号“=”例如(url?para=(qx = 'aaa')¶m=(qx1='bbb')),按程序写的则将这个等于号分割,这也就把传递的参数破坏了,求教高手有什么解决方案吗?
问题是这样的,先写了一个最普通的JS脚本,代码如下:function getString(){
var url = location.search;
var therequest = new Object();
if(url.indexOf("?")!= -1){
var str = url.substr(1);
strs = str.split("&");
for(var i = 0;i<strs.length,i++){
therequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return therequest;
} 接下来可以获取到正常的参数,但是今天遇到的参数有些特殊,附带的参数里面就有等于号“=”例如(url?para=(qx = 'aaa')¶m=(qx1='bbb')),按程序写的则将这个等于号分割,这也就把传递的参数破坏了,求教高手有什么解决方案吗?
解决方案 »
- 获取IMG标签中SRC。。
- 求教这种鼠标放上就换图的效果如何实现。
- http://topic.csdn.net/u/20071218/10/152e1101-d3e3-4ba9-8141-130e2ddee54b.html
- 求一正则表达式,验证全零
- 求一正则表达式:“a'<a>as\'sa's'</a>'”=>“a'<a>as\'sa\'s\'</a>'”
- TEXTAREA的问题
- 笨笨问题。
- 如何自动生成邮件?
- 关于提前读取,我自己也说不清了^&%^*^&^$%%$@#(*$!(&@…… 一定给分!
- net_lover 、 xhy818 、 JK_10000 、 qiushuiwuhen come in.
- js中字符串操作 正则表达式
- ExtJs定时器问题
在这个之前判断,strs.length是不是大于2,如果大于2就执行上面那一句,如果不大于2就执行你现在的那一句。
url?qx='aaa'&qx1='bbb'
var url = location.search;
var therequest = new Object();
if(url.indexOf("?")!= -1){
var str = url.substr(1),key;
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
key = strs[i].split("=")[0];
therequest[key] = unescape(strs[i].replace(key + '=', ''));
}
}
return therequest;
}
var kv = getString();
alert(kv['para'])
alert(kv['param'])
<script type="text/javascript">
var str = "url?para=(qx = 'aaa')¶m=(qx1='bbb')";
var para = getParam(str);
for (var item in para) {
document.write(item + ":" + para[item] + "<br />");
}
function getParam(url) {
var reg = /[\?\x26]([a-zA-Z\d]+)=/g;
var arr = url.match(reg);
var vaArr = url.split(reg);
var para = {};
for (var i = 0; i < arr.length; i++) {
para[arr[i].substring(1, arr[i].length - 1)] = vaArr[i + 1];
}
return para;
}
</script>