在Web编程时,一般我们都只是在服务端获取请求的Url参数,但是在前端交互过程中我们也有可能希望通过JavaScript获取Url中的参数。
我们可以通过以下JavaScript方式获取和设置Url中的参数信息:
一、定义Url参数操作方法:
// 定义获取和设置Url参数的方法 (function (window, undefined) { // 定义获取Url参数方法 if (typeof (window.getUrlParam) != "function") { /** * url:要获取参数的Url * key:要获取参数的键 * return:返回获取到的参数值 */ window.getUrlParam = function (url, key) { // 定义默认值 var value = ""; // 定位到Url参数部分 var index = url.indexOf("?"); if (index >= 0) { // 获取Url中参数集合 var params = url.substr(index + 1); params = params.split("&"); // 遍历查询对应键值的参数 for (var param in params) { param = params[param]; index = param.indexOf("="); // 获取对应键值的参数值 if (index >= 0 && key == param.substring(0, index)) { value = param.substr(index + 1); } } } // 返回获取到的参数值 return value; }; } // 定义设置Url参数方法 if (typeof (window.setUrlParam) != "function") { /** * url:要设置参数的Url * key:要设置参数的键 * value:要设置参数值 * return:返回设置了参数的新Url */ window.setUrlParam = function (url, key, value) { // 定位到Url参数部分 var index = url.indexOf("?"); if (index >= 0) { // 获取Url中参数集合 var baseUrl = url.substring(0, index); var hasKey = false; var newParams = new Array(); var oldParams = url.substr(index + 1); oldParams = oldParams.split("&"); // 遍历Url中所有的参数 for (var oldParam in oldParams) { oldParam = oldParams[oldParam]; index = oldParam.indexOf("="); if (index >= 0 && key == oldParam.substring(0, index)) { // 将需要设置的参数重新赋值 newParams.push(key + "=" + value); hasKey = true; } else { // 记录不需要设置的参数信息 newParams.push(oldParam); } } // 没有找到参数的话添加新的参数 if (!hasKey) { newParams.push(key + "=" + value); } // 重构设置了参数的Url newParams = newParams.join("&"); url = baseUrl + "?" + newParams; } else { // 重构设置了参数的Url url += "?" + key + "=" + value; } // 返回设置了参数的新Url return url; }; } })(window);
二、调用实例:
getUrlParam("index.php?a=1", "a"); // 结果:1 setUrlParam("index.php?a=1", "a", 2); // 结果:index.php?a=2