«
用在JavaScript的RequestHelper

时间:2008-6-7    作者:Deri    分类: 分享


   <p>  碰到一个小小的需求,就是要根据传入的锚(也就是url中#后面的东西啦)来显示不同的内容,记得以前写了的,不知道被我丢到哪去了,又要重新写一个,顺便把功能整理加强了一些,加入了取QueryString和Cookie的东西,老习惯,贴代码.</p><p>  RequestHelper.js</p><p><code>//功能   :  在javascript中提供QueryString/Cookie/Anchor的访问.<br />/*使用   : <br />var Request = new RequestHelper();<br />var s = Request.QueryString["id"]; //取得url中的id参数.<br />var c = Request.Cookies["name"];  //取得id为name的cookie值.<br />var a = Request.Anchor;       //取得url中定位的锚点名称.<br />*/<br />//更新   :  2008-05-31<br />RequestHelper.prototype.GetParams = function()<br />{<br />  var result = {};<br />  var loc = document.location.toString();<br />  if(loc.indexOf("?") > -1)<br />  {<br />    var l = loc.lastIndexOf("#") > -1 ? loc.lastIndexOf("#") : loc.length;<br />    var param_str = loc.substring(loc.indexOf("?")+1, l);<br />    var params = param_str.split("&");<br />    for(var x = 0; x < params.length; x++)<br />    {<br />      params[x] = params[x].split("=");<br />      result[params[x][0]] = params[x][1];<br />    }<br />  }<br />  return result;<br />}<br />  <br />RequestHelper.prototype.GetCookies = function()<br />{<br />  var result = {};<br />  var cookie = document.cookie;<br />  if(cookie.length > 0)<br />  {<br />    var reg = /(^[a-zA-z0-9]+?|; [a-zA-z0-9]+?)=/g;<br />    var c = cookie.match(reg);<br />    if(c)<br />    {<br />      var n = 0;<br />      for(var x = 0; x < c.length; x++)<br />      {<br />        n = (x < c.length - 1) ? cookie.indexOf(c[x + 1].toString()) : cookie.length;<br />        var s = cookie.substring(cookie.indexOf(c[x].toString()),n);<br />        s = s.split("=");<br />        s[0] = s[0].replace(/^; / , "");<br />        result[s[0]] = s[1];<br />      }<br />    }<br />  }<br />  return result;<br />}<br />  <br />RequestHelper.prototype.GetAnchor = function()<br />{<br />  var Anchor;<br />  var loc = document.location.toString()<br />  if(loc.lastIndexOf("#") > -1)<br />  {<br />    Anchor = loc.substring(loc.lastIndexOf("#")+1);<br />  }<br />  return Anchor;<br />}<br />  <br />function RequestHelper()<br />{<br />  this.QueryString = this.GetParams();<br />  this.Cookies = this.GetCookies();<br />  this.Anchor = this.GetAnchor();<br />}</code></p><p>  经初步测试,没发现问题,但不保证没有任何bug,有用得上的,请随便复制粘贴,有更好的方法的,请各位多多指点,我只是小菜一个,大家就砖下留情了.</p><p>  另,因cookie的名称不支持某些特殊符号,所以这里只取了数字和字母,大家注意了,如果有其它的办法,麻烦指点指点。呵呵!</p>