下面我将写出一个函数,用来获取GET方法提交的参数
function getParameter(parameterName){ var string = window.location.search; var indexStart = string.indexOf(parameterName+"="); if(indexStart==-1) return false; var result = string.slice(indexStart+parameterName.length+1); var indexEnd = result.indexOf("&"); if(indexEnd!=-1) result = result.slice(0,indexEnd); return decodeURI(result);}
下面我将一步步讲解每步的作用。
假设我们的URL是www.****.com?a=1&bc=23&d=5,而我们想要取bc的值
var string = window.location.search;
这一步,将URL中“?”后面的字符串,也就是"a=1&bc=23&d=5"保存在变量string中。
var indexStart = string.indexOf(parameterName+"=");if(indexStart==-1) return false;
这一步,将寻找"bc="在string中首次出现的位置,如果没有找到"bc=",那么将结束函数并返回false。
var result = string.slice(indexStart+parameterName.length+1);
这次,我们将"bc="后面的所有字符都保存在result变量中。当然这只是我们最终结果的开头部分。
var indexEnd = result.indexOf("&"); if(indexEnd!=-1) result = result.slice(0,indexEnd);
这次我们来寻找result中结束的地方,通常来讲都是都是"&"符号作为结束的地方。当然,如果本身就是在string中作为最后一个参数,比如"d=5"这个,那么我们之前的result就已经是正确的结果了,不需要这一步了。
return decodeURI(result);
最后我们返回result作为最终的结果。由于如果参数中又中文的话,会出现乱码,所以我们在这里加上一个decodeURI函数来返回正确的中文字符。
好了,到这里,我们就已经大功告成了!