`

JavaScript 处理 URL 的两个函数

阅读更多
function request(paras){  //获取 url 的参数值,不区分大小写,如无此参数,返回空字符串.
    var url = location.href;
    var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");
    var paraObj = {}
    for (i=0; j=paraString[i]; i++){
        paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
    }
    var returnValue = paraObj[paras.toLowerCase()];

    if(typeof(returnValue)=="undefined"){
        return "";
    }else{
        return returnValue;
    }
}
function redirect(){   //第一个参数是当前url,如 http://localhost/demo.asp?xxx=zzz, 第二个及以后的参数形式必须为 xxx=yyy, mm=bbbbb 最终跳转url为 http://localhost/demo.asp?xxx=yyy&aaa=bbb
    if (arguments.length==1){
        location.href = arguments[0];
        return;
    }else{        
        var paraObj = {};
        if (arguments[0].indexOf("?")!=-1){
            var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");
            for (i=0; j=curUrlParas[i]; i++){
                paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
            }
        }
        for (i=1; j=arguments[i]; i++){
            paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
        }
        var newURL= "";
        for (key in paraObj){
            newURL += key+"="+paraObj[key]+"&";
        }
        if (arguments[0].indexOf("?")!=-1){
            newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);
        }else{
            newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1);
        }
        location.href = newURL;
        return;
    }
}


第二个函数redirect如果只有一个参数时,就是简单的重定向,当有2个或以上的参数时,就能动态指定目的url,该函数可用于翻页功能,比如 redirect("http://www.xxx.com/list.asp?page=1","page="+parseInt(request("page"))+1),还可用于url类型的搜索,如:redirect("http://www.xxx.com/search.asp","range="+escape($("range").value),"keyword="+escape($("keyword").value)),url的操作变得简单起来。
redirect 的核心是建立一个url参数表(hash table),函数的第二个及以后的参数都是添加到该hash table中,最后把该表序列化为目的url。

刚发完日志,就想到可以再改进一下,增加一个参数,决定是否用新窗口打开目的url。

 程序代码

/*
第一个参数是当前url,如 http://localhost/demo.asp?xxx=zzz,
第二个及以后的参数形式必须为 xxx=yyy, mm=bbbbb 
最终跳转url为 http://localhost/demo.asp?xxx=yyy&aaa=bbb
*/
function redirect(){
    if (arguments.length==0){
        return;
    }
    if (arguments.length==1){
        location.href = arguments[0];
        return;
    }else if(arguments.length==2){
        (arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0];
        return;
    }else{
        var paraObj = {};
        if (arguments[0].indexOf("?")!=-1){
            var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");
            for (i=0; j=curUrlParas[i]; i++){
                paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
            }
        }
        for (i=2; j=arguments[i]; i++){
            paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
        }
        var newURL= "";
        for (key in paraObj){
            newURL += key+"="+paraObj[key]+"&";
        }
        if (arguments[0].indexOf("?")!=-1){
            newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);
        }else{
            newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1);
        }
        arguments[1]==true?window.open(newURL):location.href = newURL;
        return;
    }
}



根据昨天临下班前的想法,再修改一下,把第二个参数放到最后面去。

 程序代码
/*
    Use Age:
        redirect(url,[paras_1],[paras_2],...,[paras_n],[newWin])
        paras_n:    url参数,形式如 page=1 或 type=news 等。
        newWin:        函数的最后一个参数,布尔类型,为true时,用新窗口(window.open)打开url,否则用当前窗口(location.open)打开。默认值为 false。

    Example:
        redirect("http://www.google.com/search","q=hello","start=20",true);  //将在google搜索"hello",并翻到第3页,并用新窗口打开。
        redirect("http://www.xxx.com/listpage.asp","page="+parseInt(request("page"))+1);  //翻页功能中的“下一页”。

*/
function redirect(){
    if (arguments.length==0){
        return;
    }
    if (arguments.length==1){
        location.href = arguments[0];
        return;
    }else if(arguments.length==2 && typeof(arguments[1])=="boolean"){
        (arguments[1]==true)?window.open(arguments[0]):location.href = arguments[0];
        return;
    }else{
        var paraObj = {};
        if (arguments[0].indexOf("?")!=-1){
            var curUrlParas = arguments[0].substring(arguments[0].indexOf("?")+1,arguments[0].length).split("&");
            for (i=0; j=curUrlParas[i]; i++){
                paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);
            }
        }
        var j = arguments.length;
        for (i=1; i<j; i++){
            if (typeof(arguments[i])=="boolean"){
                break;
            }
            paraObj[arguments[i].substring(0,arguments[i].indexOf("=")).toLowerCase()] = arguments[i].substring(arguments[i].indexOf("=")+1,arguments[i].length);
        }
        var newURL= "";
        for (key in paraObj){
            newURL += key+"="+paraObj[key]+"&";
        }
        if (arguments[0].indexOf("?")!=-1){
            newURL = arguments[0].substring(0,arguments[0].indexOf("?")+1)+newURL.substring(0,newURL.length-1);
        }else{
            newURL = arguments[0]+"?"+newURL.substring(0,newURL.length-1);
        }
        if(typeof(arguments[length-1])=="boolean" && arguments[length-1]==true){
            window.open(newURL);
        }else{
            location.href = newURL;
        }
        return;
    }
}


分享到:
评论

相关推荐

    用JavaScript 处理 URL 的两个函数代码

    JavaScript 处理 URL 的两个函数代码 JavaScript 处理 URL 的两个函数代码是指使用 JavaScript 语言来处理 URL 的两个函数代码。在这两个函数代码中,第一个函数代码是 request 函数,用于获取 URL 的参数值;第二...

    JavaScript的一些工具函数的封装包括url的参数处理数字字符串日期等相关操作函数

    此外,可能会有一些实用的日期比较函数,如`isSameDay`或`isBeforeDate`,帮助开发者判断两个日期的关系。 除此之外,这个工具库可能还提供了其他实用功能,比如数组操作(如`arrayContains`检查数组是否包含某个值...

    用JavaScript实现PHP的urldecode/urldecode函数

    这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决

    asp函数实现javascript里的escape函数和unescape函数功能

    这两个函数通常用于处理URL、表单数据等场景。 #### ASP中的实现 在ASP环境中,我们可以使用VBScript编写自定义函数来模拟`escape`和`unescape`的功能。下面分别介绍这两个函数的实现方法: ### 1. vbsEscape函数...

    Javascript UrlDecode函数代码

    `ShengUtils.decode`函数则用于解码经过`encode`函数处理过的URL字符串。它同样遍历输入字符串`zipStr`的每个字符,遇到`+`替换为空格,遇到`%`开始的序列则执行解码操作。如果`%`后面的16进制数字大于0x7f,说明这...

    javascript函数大全

    本文旨在全面介绍JavaScript函数,涵盖数学运算、字符串操作、日期处理、数组管理等多个领域,通过详细解析每个函数的功能与使用场景,帮助开发者提升编程效率与代码质量。 #### 数学函数:精确计算的基石 - **abs...

    网页脚本(javascript)调用VB函数的另类方法

    - 在HTML文件中设置两个按钮,分别对应于两个自定义URL,用于触发对应的VB函数。 ```html ()"&gt; ()"&gt; Sub Hello_OnClick() location.href = "Event:Hello" End Sub Sub Close_OnClick() ...

    javascript手册+php常用函数

    这两个手册将帮助开发者深入理解这两种语言的核心概念,提高编程效率,解决实际开发中的问题。通过查阅这些手册,你可以快速查找所需功能的实现方法,或者学习新的编程技巧,从而提升自己的技术水平。无论你是初学者...

    纯Javascript脚本实现GBK URL编解码

    2. **URL编码**:JavaScript的`encodeURIComponent`函数可以对字符串进行URL编码,但默认它只处理UTF-8编码。为了GBK编码的字符串能正确编码,需要先将GBK编码后的字节序列转换为 `%xx` 形式,这可以通过遍历字节...

    深入解析:JavaScript中的`encodeURIComponent`与`decodeURIComponent`方法

    这两个函数对于编码和解码URL组件至关重要。本文将详细探讨这两个函数的工作原理、使用场景以及如何在实际开发中正确使用它们。 encodeURIComponent和decodeURIComponent是JavaScript中处理URL编码和解码的重要工具...

    一个JavaScript函数把URL参数解析成Json对象

    在JavaScript编程中,有时我们需要处理URL中的查询字符串(query string),将其转换为可操作的数据结构,...理解这个函数的工作原理以及其与JavaScript对象创建方式的关系,对于进行Web开发的程序员来说是非常重要的。

    浅谈javascript的url参数parse和build函数

    在Web开发中,经常需要对URL中的查询参数进行解析和构建,而JavaScript提供了两种主要的函数来实现这一功能:parse(解析)和...通过实现这两个函数,可以极大地简化对URL参数的操作,并在实际应用中发挥重要的作用。

    一个简单的JavaScript函数式编程教程JAVA语言

    这里使用了`map`和`some`这两个数组原型方法,它们都是JavaScript提供的高阶函数。`map`用于创建一个新数组,其结果是调用一个提供的函数对原数组的每个元素所做的处理;`some`则用于测试数组中是否至少有一个元素...

    js函数大全 javascript

    10. **字符串连接**:在JavaScript中,使用`+`号可以连接两个字符串。 11. **比较操作符**:`==`表示等于,`!=`表示不等于,`&gt;`表示大于,`表示小于,`&gt;=`表示大于等于,`表示小于等于。 12. **变量声明**:使用`...

    javascript将url中的参数加密解密代码

    首先,我们有两个主要的函数:`Encrypt` 和 `Decrypt`。`Encrypt` 函数用于加密URL参数,而 `Decrypt` 函数则用于解密已加密的数据。 1. **加密过程**: - 首先,函数检查输入的字符串 `str` 是否为空,如果为空则...

    javascript函数动态加载javascript文件

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责处理客户端的交互和数据管理。在实际项目中,为了提高页面加载速度和优化用户体验,我们常常需要按需加载JavaScript文件,而不是一次性加载所有...

    javascript xml操作函数

    它接受两个参数:`rootTagName` 和 `namespaceURL`。 - **参数**: - `rootTagName`: XML文档根元素的名称,默认为空字符串。 - `namespaceURL`: XML命名空间的URL,默认为空字符串。 - **返回值**:返回一个XML...

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    寻找两个函数所有不同的元素 寻找两数组所有不同元素 得到文件类型 截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换...

    用JavaScript实现PHP的urlencode与urldecode函数

    文章《用JavaScript实现PHP的urlencode与urldecode函数》就提供了如何在JavaScript中实现这两个函数的方法。 首先,我们来理解urlencode函数的功能和实现原理。urlencode函数的目的是将字符串进行编码,使得该字符...

Global site tag (gtag.js) - Google Analytics