`
hackbomb
  • 浏览: 212341 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用js从url中提取request参数

阅读更多

UrlParm =  function () {  // url参数   
   var  data, index;   
  ( function  init() {   
    data = [];   
    index = {};   
     var  u = window.location.search.substr(1);   
     if  (u !=  '' ) {   
       var  parms = decodeURIComponent(u).split( '&' );   
       for  ( var  i = 0, len = parms.length; i < len; i++) {   
         if  (parms[i] !=  '' ) {   
           var  p = parms[i].split( "=" );   
           if  (p.length == 1 || (p.length == 2 && p[1] ==  '' )) { // p | p=   
            data.push([ '' ]);   
            index[p[0]] = data.length - 1;   
          }  else   if  ( typeof (p[0]) ==  'undefined'  || p[0] ==  '' ) {  // =c | =   
            data[0] = [p[1]];   
          }  else   if  ( typeof (index[p[0]]) ==  'undefined' ) {  // c=aaa   
            data.push([p[1]]);   
            index[p[0]] = data.length - 1;   
          }  else  { // c=aaa   
            data[index[p[0]]].push(p[1]);   
          }   
        }   
      }   
    }   
  })();   
   return  {   
     // 获得参数,类似request.getParameter()   
    parm :  function (o) {  // o: 参数名或者参数次序   
       try  {   
         return  ( typeof (o) ==  'number'  ? data[o][0] : data[index[o]][0]);   
      }  catch  (e) {   
      }   
    },   
     //获得参数组, 类似request.getParameterValues()   
    parmValues :  function (o) {  //  o: 参数名或者参数次序   
       try  {   
         return  ( typeof (o) ==  'number'  ? data[o] : data[index[o]]);   
      }  catch  (e) {}   
    },   
     //是否含有parmName参数   
    hasParm :  function (parmName) {   
       return   typeof (parmName) ==  'string'  ?  typeof (index[parmName]) !=  'undefined'  :  false ;   
    },   
     // 获得参数Map ,类似request.getParameterMap()   
    parmMap :  function () {   
       var  map = {};   
       try  {   
         for  ( var  p  in  index) {  map[p] = data[index[p]];  }   
      }  catch  (e) {}   
       return  map;   
    }   
  }   
}();   
  
//例如   
// URL是 http://127.0.0.1/demo.jsp?a&page=2&b=dd&c=123&b=dd2   
UrlParm.parm(0)          // 结果:  "";   
UrlParm.parm( 'a' )        // 结果:  "";   
UrlParm.parm( 'page' )     // 结果:  "2";   
UrlParm.parm(1)          // 结果:  "2";   
UrlParm.parm( "b" )        // 结果:  "dd";   
UrlParm.parmValues( "b" // 结果:  ["dd","dd2"];   
UrlParm.hasParm( "b" )     // 结果:  true;   
UrlParm.hasParm( "x" )     // 结果:  false;   
UrlParm.parmMap()        // 结果:  {a:[""],page:[2],b:["dd","dd2"],c:["123"]};  

分享到:
评论

相关推荐

    使用JavaScript获取Request中参数的值方法

    提取该URL?后面的部分,通过slice()方法。 把获取到的Request对象分割成字符串数组,通过split() 方法。 接下来看代码。 function getUrlVars() { var vars = [], hash; var hashes = [removed].href.slice...

    vue不通过路由直接获取url中参数的方法示例

    mid=100的方式传递参数更灵活,你不需要设置路由,只需要在url后拼接参数即可,但是这种方式就需要通过javascript获取并提取url中的参数,通过传统的方式直接在页面中获取是行不通的了,因为vue中是无法通过location...

    feedfinder:转换流从 HTML 页面中提取提要链接

    转换流从 HTML 页面中提取提要链接 安装 npm install feedfinder 文档 feedfinder是一个转换流,它接受一个缓冲流并输出一个对象流。 该函数需要一个源 url 作为第一个参数,用于计算提要的绝对 url。 这些对象有...

    umi-request:基于获取的请求工具

    支持的功能url参数自动序列化发布数据提交方法得到简化响应返回处理简化api超时支持api请求缓存支持支持处理gbk 请求和响应拦截器支持,例如axios 统一错误处理中间件支持取消请求支持,例如axios 从node.js发出http...

    node_js_lab

    目标第1部分使用npm init创建一个NodeJS项目。... 从每个文章标题,URL和作者中提取内容将每个提取的文章推送到一个数组中。 将数组写入项目根目录中的文件Popular-articles.json。 高级创建一个名为Popular-downloader

    vercel-preview-url-action:捕获一个Vercel预览URL并将其输入到您的下一个GitHub操作中

    它尝试从注释中提取预览URL,并将其设置为操作的输出,以便您可以将其输入到下一个操作中。 请注意: 仅当找到预览URL时,此操作才会成功,它会被取消(如果传递了GITHUB_TOKEN ),或者在其他所有事件上均失败。...

    Node.js 路由

    我们需要的所有数据都会包含在 request 对象中,该对象作为 onRequest() 回调函数的第一个参数传递。但是为了解析这些数据,我们需要额外的 Node.JS 模块,它们分别是 url 和 querystring 模块。

    WebScraper:NodeJS网页抓取工具

    从目标网页中提取重要数据。 您如何使用WebScraper? 运行以安装节点依赖性。 npm install 更改对象数组。 var title和var json到您要从网站提取的数据。 将内部函数更改为trim()并将对象放入数组中。 确保您...

    Node.js 路由的实现方法

    我们平时工作中,涉及到后台开发,路由基本上是我们第一个需要建的,路由还是很重要的。 那么,什么是路由呢,通俗点举...我们需要的这些数据都会包含在request对象中,该对象作为onRequest()回调函数的第一个参数传递

    allOrigins:通过API以JSON格式从任何页面提取内容

    通过API(以JSON / P或原始格式)从任何页面提取内容,并避免问题。 一个免费开放源代码的 javascript克隆,灵感来自 ,但支持压缩页面。 例子 要从 fetch数据: fetch ( `https://api.allorigins.win/get?url= $...

    fetch-intercept:受角度http拦截启发的本机提取命令的拦截器库

    截取 受本地启发的本地提取命令的拦截器库。 fetch-intercept Monkey修补了全局fetch方法,并... register ( { request : function ( url , config ) { // Modify the url or config here return [ url , config ] ;

    cache-control-spider:搜寻网站以获取Cache-Control标头

    从HTML和CSS文件中提取URL 报告按Cache-Control标头的不同值分组的URL 安装 $ git clone git@github.com:jameslnewell/cache-control-spider.git $ npm i 用法 $ node index.js http://dev.online4.nib.com.au ...

    从零学习node.js之简易的网络爬虫(四)

    之前已经介绍了node.js的一些基本知识,下面这篇文章我们的目标是学习完本节课程后,能进行网页简单的分析与抓取,对抓取到的信息进行输出和文本保存。 爬虫的思路很简单: 确定要抓取的URL; 对URL进行抓取,...

    fetch-service:提取服务

    fetch-service-parserfetch-service-parser说明fetch-service-parser 是一个接口请求的工具,帮助快速定义接口,使用fetch请求规范,polyfill使用whatwg-fetch使用请求Table 列表// api.js 定义接口import { ...

    anidbjs:基于承诺的AniDB客户端

    该模块提供了一个非常小的接口,用于从anidb.net提取数据。 您可能需要先阅读anidb 的准则。 您需要在AniDB上注册的客户端才能使用此“ lib”。 用法 该模块导出一个构造函数,该函数接受2个对象- credentials和...

    python接口自动化测试框架.zip

    采用的yaml 作为测试用例,对测试用例做了严格的规范,name、request(method, url ), validate(断言) 支持多种请求方式和传参方式 持多种断言方式(相等、包含、断言) 支持基于yaml的数据驱动 支持热加载(在代码...

    超市管理系统

    (4)页面提取: 首页等页面的头部,左侧导航,底部 等都可以单独的提取到JSP中. 在源页面上进行引用. &lt;%@include file=""%&gt; 等 (百度搜索iframe的使用) (5)账单,供应商,用户查询列表带分页。 该分页查询...

    三种版本的在线图片裁剪基于UCenter camera.swf

    在上面第 0 步生成的 HTML 中,指向 camera.swf 的 URL 携带了一些参数,其中最关键的是 ucapi,它决定了第 1 步和第 2 步的 HTTP Request 发往哪里。 其它几个都是 UCenter 应用系统所需要的参数。camera.swf 是专...

    cycle-fetcher-driver:使用Fetcher发出HTTP请求的Cycle.js驱动程序

    周期提取器驱动程序一个Cycle.js驱动程序,用于使用stackable fetcher发出HTTP请求。安装npm install @r7kamura/cycle-fetcher-driver用法import Cycle from '@cycle/core' ;import { h , makeDOMDriver } from '@...

Global site tag (gtag.js) - Google Analytics