欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

HTTP-URL中查询字符串格式化

程序员文章站 2022-03-15 22:12:35
HTTP-URL中查询字符串格式化 GET请求是最常见的请求类型,常用语向服务器查询某些信息。必要时,需要将查询字符串追加到URL末尾。有的时候为了根据URL中查询字符串的不同渲染不同的页面...

HTTP-URL中查询字符串格式化

GET请求是最常见的请求类型,常用语向服务器查询某些信息。必要时,需要将查询字符串追加到URL末尾。有的时候为了根据URL中查询字符串的不同渲染不同的页面也需要读取URL中的查询字符串。如何避免在URL写入查询字符串时报出格式错误 及 如何更快捷读出URL中查询字符串就是这篇博客要解决的问题。

https://www.baidu.com/baidu?wd=%C6%E2%C7%E0%F1%C6+csdn&tn=monline_dg 在这个URL中 ? 后的字符串wd=%C6%E2%C7%E0%F1%C6+csdn&tn=monline_dg即为查询字符串。

相关代码请到github查看。

(function(window, document) {

var UrlParas = function(url) {

return UrlParas.fn.init(url);

};

UrlParas.VERSION = '1.0.0';

UrlParas.fn = UrlParas.prototype = {

url: "",

pathname: "",

paras: "",

init: function(url) {

this.url = url;

this.pathname = url.split("?")[0];

this.paras = this.get();

return this;

},

//以object类型返回url参数及其取值

get: function(option) {

var paraStr, paras,

url = this.url;

if (url) {

paraStr = url.split("?")[1];

if (paraStr) {

paras = {};

paraStr = paraStr.split("&");

for (var n in paraStr) {

var name = paraStr[n].split("=")[0];

var value = paraStr[n].split("=")[1];

paras[name] = value;

}

} else {

return {};

}

if (!option) {

return paras;

} else {

return paras[option] ? paras[option] : "";

}

}

},

//重设url参数取值,若无此参数则进行创建,若参数赋值为null则进行删除

set: function(option) {

var i, name, val;

if (arguments.length == 2) {

name = arguments[0];

val = arguments[1];

option = {

name: val

};

}

if ("string" === typeof option) {

this.paras[option] = "";

} else if ("object" === typeof option) {

for (i in option) {

if (option[i] === null) {

delete this.paras[i];

} else {

this.paras[i] = option[i];

}

}

} else {

}

return this.build();

},

//删除url中指定参数返回新url

remove: function(option) {

var i;

if ("string" === typeof option) {

option = option.split(",");

for (i in option) {

delete this.paras[option[i]];

}

}

return this.build();

},

//根据url和处理过的paras重新构件url

build: function() {

var i,

newUrl = this.pathname + "?";

for (i in this.paras) {

newUrl += (i + "=" + this.paras[i] + "&");

}

return newUrl.substr(0, newUrl.length - 1);

}

};

UrlParas.fn.init.prototype = UrlParas.fn;

window.urlParas = UrlParas;

})(window, document);

//使用

testUrl = "https://www.baidu.com/baidu?wd=%C6%E2%C7%E0%F1%C6+csdn&tn=monline_dg";

console.log(urlParas(testUrl).get());

console.log(urlParas(testUrl).get("lang"));

console.log(urlParas(testUrl).set("test2","22222"));

console.log(urlParas(testUrl).set("111", "bean"));

console.log(urlParas(testUrl).set({

"ajax": "ok",

"lang": null,

"trswq": null

}));

console.log(urlParas(testUrl).set({

zcsdf: "zcsdf",

cesahi: "ceadasdads",

lang: "zh-cn"

}));

console.log(urlParas(testUrl).remove("lang,tt"));

console.log(urlParas(testUrl).pathname);

执行结果

 

HTTP-URL中查询字符串格式化

可以看出,urlParas对测试URL进行了 截取查询字符、增加查询字符串、删除查询字符串等操作。

注意:这里有一个查询参数中如果有中文,则必须编码的问题,解决办法请查看我的博客