JQuery查询、增加、修改Url参数

2017-09-28 · 🙈Ray · 0条 · 490次

> 解析Url

下面的方法通过正在匹配的方式,解析出url的各个组成部分,以Object的方式返回。读取结果可以使用object.hash的方式,也可以使用object['hash']的方式。

例子:

下面是的代码是一个返回结果的示例,url是输入该方法的参数,其他值是解析出来的内容。

Object
    hash:"line"
host:"www.geek-era.com"
path:"query"
port:undefined
query:"aaa=111&bbb=22"
scheme:"http"
slash:"//"
url:"http://www.geek-era.com/query?aaa=111&bbb=22#line"
/**
* Url分析
* @param {String} url 要分析的URL
* @return {Object} 返回包含'url', 'scheme', 'slash', 'host', 'port', 'path', 'query', 'hash'的数组
*/
function analyseUrl(url){
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var analyseResult = parse_url.exec(url);
var fields = ['url', 'scheme', 'slash', 'host', 'port', 'path', 'query', 'hash'];
var result = new Object();
$.each(fields, function(n, item){
result[item] = analyseResult[n];
});
return result;
}

> 查询Url参数

下面的方法查询url中是否有某个参数,如果有则返回该参数的值,如果没有则返回null。

/**
* 查询/判断url是否有某个参数,如果有该参数,返回参数的值;没有返回null
* @param {String} url 要查询的url
* @param {String} name 要查询的参数名
* @return {String} 参数的值
*/
function hasParameter(url, name){
var urlAnalyse = analyseUrl(url);
var urlParam = urlAnalyse.query;
if(typeof(urlParam) != 'undefined'){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = urlParam.match(reg);
if (r != null){
return unescape(r[2]);
}
//有该参数,但是值为null
return "";
}
//没有该参数
return null;
}

> 增加Url参数

/**
* url增加参数
* @param {String} url 要修改的url
* @param {String} name 要增加的参数名
* @param {String} value 对应的参数值
* @return {String} 修改后的结果
*/
function addParameter(url, name, value){
var newUrl = url;
var paremeter = name + "=" + value;
if (url.match("[\?]")) {
//存在其他参数,用&连接
newUrl = url + "&" + paremeter;
} else {
//没有参数,用?连接
newUrl = url + "?" + paremeter;
}
return newUrl; }

> 修改Url参数

/**
* 替换Url参数
* @param {String} url 要修改的Url
* @param {String} name 要修改的参数名
* @param {String} value 对应的参数的值
* @return {String} 修改后的Url
*/
function replaceParameter(url, name, value) {
var newUrl = url;
if(hasParameter(url, name)){
//有该参数,修改
var replacedPar = eval('/(' + name + '=)([^&]*)/gi');
newUrl = url.replace(replacedPar, name + '=' + value);
} else {
//没有该参数,增加
newUrl = addParameter(url, name, value);
}
return newUrl;
}




  0