一、从URL中提取参数
有下列字符串:
var linkURL = 'http://localhost:8080/String/string_6.html?昵称=小西山子&age=24#id1';
对于一个真实的URL地址,可以用js来读取location中的相关信息来获得某些信息,下面列举一些:
复制代码 代码如下:
location.origin : http://localhost【域】
location.pathname : /project_js/Javascript/js_basic/demo/String/string_6.html【URL路径】
location.host : localhost【主机+端口】
location.hostname : localhost【主机名】
location.port :【端口】
location.search : ?name=xesam【查询字符串】
location.hash : #age【锚点】
location.href : http://localhost/project_js/Javascript/js_basic/demo/String/string_6.html?name=xesam#age【完整形式】
location.protocol : http【协议】
其中,与从URL中提取参数主要是用到location.search。不过为了通用,我们不去读取location.search,直接处理字符串。
提取字符串查询字符串之后,转化为对象的形式。
先讨论几种查询字符串的情况:
(1)?昵称=小西山子&age=24#id1 -->{昵称:'小西山子',age:'24'}
(2)?昵称&age=24#id1'; -->{昵称:undefined,age:'24'}
(3)?=小西山子&age=24#id1 -->{age:'24'}
(4)?昵称=小西山子=又一个&age=24&age=24#id1 -->{昵称:'小西山子=又一个',age:['24','24']}
复制代码 代码如下:
function toQueryParams(){
var search = this.replace(/^\s+/,'').replace(/\s+$/,'').match(/([^?#]*)(#.*)?$/);//提取location.search中'?'后面的部分
if(!search){
return {};
}
var searchStr = search[1];
var searchHash = searchStr.split('&');
var ret = {};
for(var i = 0, len = searchHash.length; i < len; i++){ //这里可以调用each方法
var pair = searchHash[i];
if((pair = pair.split('='))[0]){
var key = decodeURIComponent(pair.shift());
var value = pair.length > 1 ? pair.join('=') : pair[0];
console.log()
if(value != undefined){
value = decodeURIComponent(value);
}
if(key in ret){
if(ret[key].constructor != Array){
ret[key] = [ret[key]];
}
ret[key].push(value);
}else{
ret[key] = value;
}
}
}
return ret;
}
console.dir(toQueryParams.call(linkURL));
上面基本就是Prototype中toQueryParams的实现,上面又一个步骤是用'='分割参数,然后在value中再拼接。另外可以用substring来实现:
复制代码 代码如下:
function toQueryParams(){
var search = this.replace(/^\s+/,'').replace(/\s+$/,'').match(/([^?#]*)(#.*)?$/);
if(!search){
return {};
}
var searchStr = search[1];
var searchHash = searchStr.split('&');
var ret = {};
searchHash.forEach(function(pair){
var temp = '';
if(temp = (pair.split('=',1))[0]){
var key = decodeURIComponent(temp);
var value = pair.substring(key.length + 1);
if(value != undefined){
value = decodeURIComponent(value);
}
if(key in ret){
if(ret[key].constructor != Array){
ret[key] = [ret[key]];
}
ret[key].push(value);
}else{
ret[key] = value;
}
}
});
return ret;
}
console.dir(toQueryParams.call(linkURL));
一、对象转换为URL查询参数
对象转换为URL查询参数就麻烦一点。不过由于是转换成查询参数形式,因此只能处理单层嵌套的对象,子对象就不能处理了。其原理就是toQueryParams的反向操作。
复制代码 代码如下:
function toQueryPair(key, value) {
if (typeof value == 'undefined'){
return key;
}
return key + '=' + encodeURIComponent(value === null ? '' : String(value));
}
function toQueryString(obj) {
var ret = [];
for(var key in obj){
key = encodeURIComponent(key);
var values = obj[key];
if(values && values.constructor == Array){//数组
var queryValues = [];
for (var i = 0, len = values.length, value; i < len; i++) {
value = values[i];
queryValues.push(toQueryPair(key, value));
}
ret = ret.concat(queryValues);
}else{ //字符串
ret.push(toQueryPair(key, values));
}
}
return ret.join('&');
}
console.log(toQueryString({
name : 'xesam',
age : 24
})); //name=xesam&age=24
console.log(toQueryString({
name : 'xesam',
age : [24,25,26]
})); //name=xesam&age=24&age=25&age=26
真实源码中用的是inject方法,不过在Enumerable部分,因此上面作了替换。
相关推荐:
一键创作,助你轻松实现创意梦想,最低价刷粉网站推广
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
seo项目是什么,seo是啥 ,ai ued
ChatGPT中显示已进行一处编辑,但看不到内容?你需要了解的隐藏问题!,ai敲
seo都有什么意思,seo 啥意思 ,ai园林
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
优化软件:让电脑性能焕然一新,提升效率的秘密武器,大理网站推广招聘信息最新
目前最火的AI软件有哪些?深度解析必备工具
ChatGPT错误处理与异常情况解决方法:让你的AI助手更加智能与可靠,智能ai鼠标ai智能语音
SEO关键词的选择步骤:让你的网站在搜索引擎中脱颖而出,ai书法化
SEO利用:让你的网站快速登顶,获取更多流量与客户!,延边小程序推广平台网站
文章AI生成标题:让创作更轻松,内容更精彩
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
ChatGPT网页版内容显示不全的解决方案:如何轻松解决问题?,课件ai
SEO站外优化策略:提升网站排名的关键因素,遵义公司网站推广
SEO优化:如何让网站更具有吸引力,散文ai写作咒语是什么
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
SEO站在未来之巅,助力网站在激烈竞争中脱颖而出,推荐网站优化欢迎咨询
为什么seo对企业重要,seo对企业进行网络营销的价值 ,ai李沁换脸鲍鱼
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
seo用到什么软件,做seo需要用到什么软件 ,皮皮ai
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
OpenAIGPTChatSoraOpenAIChatGPT服务在中断数小时后已恢复,ai视图线稿
SEO全套秘籍:提升网站流量与排名的终极指南,荣昌手机网站建设
为什么“未备案域名”会成为互联网行业中的重要问题?,江干区seo优化价格
企业关键字-助力企业成功的隐形动力,闽侯县企业网站建设
仿写AI:智能时代的创作革命,洛江区移动房网站推广
ChatGPT为什么用不了了?背后的真相揭秘!,ai写作专家收费吗
SEO新站优化指南:快速提升排名的必备技巧,海珠网站推广哪家有名
ChatGPT-01:开创人工智能新纪元,AI如何画模糊的云层
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
SEO有点:揭秘优化之道,提升网站排名的秘诀,广州抖音seo厂家地址
SEO手段:提升网站流量的制胜法宝,idc网站怎么推广
重生成AI:突破科技前沿,开启智能未来
常用AI工具,高效智能生活
ChatGPT启动时遇到问题?快速解决方案让你畅享智能对话体验,ai如何保存logo
SEO出来,打破流量瓶颈,助力企业增长的关键策略,南昌营销推广代理商电话
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
今时CMS:引领数字化转型的智慧之选,河南seo优化网站联系方式
AI助手推进:智能化时代的企业革命,ai改变图片颜色
SEM+SEO:助力企业数字化营销的双剑合璧之道,ai头像丑
SEO就业前景如何?打造数字时代的职业新风口,常州武进区水产网站建设
创作新时代:自动生成文章AI的魅力与未来
ChatGPT破解:人工智能未来的无限可能,污污AI解说
OpenAI新产品与现有技术的完美结合:赋能未来的智能变革,培训 ai
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
seo算是什么营销方式,seo是网络营销吗 ,ai318
SEO自己:打造属于你的数字营销利器,微信裂变营销推广软件
软件AI:颠覆未来的智能革命