zoukankan      html  css  js  c++  java
  • JavaScript URL传值过程中遇到的问题及知识点总结

    JavaScript URL传值过程中遇到的问题及知识点总结


    Web系统开发过程中经常用到URL进行传值,刚刚接触时不太会解析,会出现中文乱码问题等。

    1、父子页面之间的传值(在一个页面中以加载iframe框架的形式调出另一个页面)。

    var URL=“XXXX..?code=aaa&name=liming&age=123”;

    在子页面中进行解析时:

    var href=window.location.href;  //获取到当前的地址

    然后以截取字符串的形式获取相应的参数值(截取字符串的方式适用于参数较少的情况,如果参数较多则不适合);

    var code=href.substring(href.indexOf('=')+1,href.indexOf('&'));

    .........一次类推获取所有参数。

    2、由于URL编码规范中中文属于不合法字符,所以需要编码成合法的URL。

    JavaScript中提供的全局函数:

    顶层函数(全局函数)

    函数描述
    decodeURI() 解码某个编码的 URI。
    decodeURIComponent() 解码一个编码的 URI 组件。
    encodeURI() 把字符串编码为 URI。
    encodeURIComponent() 把字符串编码为 URI 组件。
    escape() 对字符串进行编码。
    eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。
    getClass() 返回一个 JavaObject 的 JavaClass。
    isFinite() 检查某个值是否为有穷大的数。
    isNaN() 检查某个值是否是数字。
    Number() 把对象的值转换为数字。
    parseFloat() 解析一个字符串并返回一个浮点数。
    parseInt() 解析一个字符串并返回一个整数。
    String() 把对象的值转换为字符串。
    unescape() 对由 escape() 编码的字符串进行解码。

    例如:

    var url="XXXXX..?code=111&name=晓明&age=123";

    window.location.assign(encodeURL(url));

    在另一个页面解析的时候为:

    var href=decodeURL(location.href);


    定义一个函数方便获取url中的参数

    函数1:(当参数中没用中文的时候使用)

    function getURLParameter(){

         var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

         var href = decodeURI(location.href);            

         var r = window.location.search.substr(1).match(reg);            

         if (r != null) return unescape(r[2]);           

         return null;

    }

    函数2:(当参数中用中文的时候使用)

    function getURLParameter(name) {            

         var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");            

         var l = decodeURI(window.location.search);            

         var r = l.substr(1).match(reg);            

         if (r != null) return unescape(r[2]);            

         return null;        

    }


    对应的知识点:

    RegExp 对象

    RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

    语法:new RegExp(pattern, attributes);

    ·

    参数

    参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

    参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

    返回值

    一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

    如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

    抛出

    SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

    TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。


    Location 对象


    Location 对象

    Location 对象包含有关当前 URL 的信息。

    Location 对象是 window 对象的一部分,可通过 window.Location 属性对其进行访问。

    Note注意: 没有应用于Location对象的公开标准,不过所有浏览器都支持该对象。


    Location 对象属性

    属性描述
    hash 返回一个URL的锚部分
    host 返回一个URL的主机名和端口
    hostname 返回URL的主机名
    href 返回完整的URL
    pathname 返回的URL路径名。
    port 返回一个URL服务器使用的端口号
    protocol 返回一个URL协议
    search 返回一个URL的查询部分

    Location 对象方法

    方法说明
    assign() 载入一个新的文档
    reload() 重新载入当前文档
    replace() 用新的文档替换当前文档
  • 相关阅读:
    curl -L 跟随跳转
    Http报头Accept与Content-Type的区别
    curl 发送json请求
    IntelliJ 中类似于Eclipse ctrl+o的是ctrl+F12
    Spring AOP
    Windows下Nginx配置SSL实现Https访问(包含证书生成)
    @Retention n. 保留
    Exchanger使用
    Semaphore使用
    UVA12493
  • 原文地址:https://www.cnblogs.com/dongteng/p/7156870.html
Copyright © 2011-2022 走看看