南昌莫非网络之Javascript查询字符串location.search()使用方法介绍

南昌莫非网络科技
2020-12-09
来源:南昌莫非网络科技

南昌莫非网络之Javascript查询字符串location.search()使用方法介绍

首先我们介绍location对像,location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。事实上,location对象是很特别的一个对象,因为它既是window对象的属性,也是document对象的属性;换句话说,window.location和document.location引用的是同一个对象。location对象的用处不只表现在它保存着当前文档的信息,还表现在它将URL解析为独立的片段,让开发人员可以通过不同的属性访问这些片段。南昌网络公司技术人员将通过下表列出了location对象的所有属性(注:省略了每个属性前面的location前缀)。


属性名例子说明

hash"#contents"返回URL中的hash(#号后面跟零或多个字符),如果URL中不包含散列,则返回空字符串.

host"www.ncmofei.com:80"返回服务器名称和端口号(如果有)

hostname"www.ncmofei.com"返回不带端口号的服务器名称

href"http://www.ncmofei.com"返回当前加载页面的完整URL.而location对象的toString()方法也返回这个值.

pathname"/NewsList/"返回URL中的目录和(或文件名)

port"8080"返回URL中的指定的端口号,如果URL中不包含端口号,则这个属性返回空字符串

protocol"http:"返回页面使用的协议,通常是http:或https

search"?id=5"返回URL的查询字符串.这个字符串以问号开头.


   虽然通过上面的属性可以访问到location对象的大多数信息,但其中访问URL包含的查询字符

串的属性并不方便。尽管location.search返回从问号到URL末尾的所有内容,但却没有办法逐个访问其中的每个查询字符串参数。为此,南昌网站设计公司技术人员可以像下面这样创建一个函数,用以解析查询字符串,然后 返回包含所有参数的一个对象:

      function getQueryStringArgs(){

//取得查询字符串并去掉开头的问号

      var qs=(location.search.length>0 ? location.search.substring (1) :"");

//保存数据的对象

      var args=();

//取得每一项

      varltems=qs .split(“&");

      var item=null.

      name=null.

      value=null;

//逐个将每一项添加到args对象中

      for (var i=0;i       item=items[i]. split(":");

      name=decodeURIComponent (item[0]);

      value=decodeURIComponent (item [1]);

      args[name] =value;

      }

      return args;


   这个函数的**步是先去掉查询字符串开头的问号。当然,前提是location.search中必须要包含一或多个字符。然后,所有参数将被保存在args对象中,该对象以字面量形式创建。接下来,根据和号(&)来分割查询字符串,并返回name=value格式的字符串数组。下面的for循环会迭代这个数组,然后再根据等于号分割每一项,从而返回**项为参数名,第二项为参数值的数组。再使用decodeURIComponent()分别解码name和value(因为查询字符串应该是被编码过的)。最后,将name作为args对象的属性,将value作为相应属性的值。下面给出了使用这个函数的示例:

//假设查询字符串是?q=j avascript&num=10

      var args=getQueryStringArgs();

      alert(args['q"]);//“javascript“

      alert(args["num"]);//"l0"

   可见,每个查询字符串参数都成了返回对象的属性。这样就极大地方便了对每个参数的访问。

本文**内部技术人员学习交流,不得作于其他商业用途.

分享