`
liudaoru
  • 浏览: 1557777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS实现request.getParameter的方法

    博客分类:
  • Ajax
阅读更多
js 代码
  1. var PARAMTER_VALUE = null;   
  2. function getParamter(paramName) {   
  3.     if(!PARAMTER_VALUE) {   //第一次初始化   
  4.         PARAMTER_VALUE = new Array();   
  5.         var paramStr = location.search.substring(1);   
  6.         var paramArr = paramStr.split("&");   
  7.         var len = paramArr.length;   
  8.         var tempArr;   
  9.         for(var i = 0; i < len; i++) {   
  10.             tempArr = paramArr[i].split("=");   
  11.             PARAMTER_VALUE[tempArr[0]] = tempArr[1];   
  12.         }   
  13.     }   
  14.     var paramValue = PARAMTER_VALUE[paramName];   
  15.     if(paramValue) {   
  16.         return paramValue;   
  17.     }   
  18. }  

今天遇到这样一个需求,不知道还有没有其他更好的实现方法?

分享到:
评论
8 楼 liudaoru 2007-11-30  
niuyuewanzi 写道
/*
 * This function parses ampersand-separated name=value argument pairs from
 * the query string of the URL. It stores the name=value pairs in
 * properties of an object and returns that object. Use it like this:
 *
 * var args = getArgs( );  // Parse args from URL
 * var q = args.q || "";  // Use argument, if defined, or a default value
 * var n = args.n ? parseInt(args.n) : 10;
 */
function getArgs( ) {
    var args = new Object( );
    var query = location.search.substring(1);     // Get query string
    var pairs = query.split("&");                 // Break at ampersand
    for(var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');          // Look for "name=value"
        if (pos == -1) continue;                  // If not found, skip
        var argname = pairs[i].substring(0,pos);  // Extract the name
        var value = pairs[i].substring(pos+1);    // Extract the value
        value = decodeURIComponent(value);        // Decode it, if needed
        args[argname] = value;                    // Store as a property
    }
    return args;                                  // Return the object
}

 


JAVASCRIPT GUIDE 上COPY的.

如果通用的话decodeURIComponent方法确实要加上。这个方法考虑的还是比较周全。
7 楼 liudaoru 2007-11-30  
HexUzHoNG 写道
仔细一看,学到一个新方法(上班只敢偷偷的看,呵呵)
location.search.substring(1)

不应该每次都解析url的,这样效率太差。
那假如这种情况会不会有问题
比如翻页的情况下,第一次是&page=1,然后xmlhttp请求第二页&page=2

那我再想取这个page值?

---------------------
那个方法是写死的只能取location的,好像不适合这种情况下取值。

------------------------------

如果用Ajax请求的话就不能用loaction.search了,那样可以直接取值啊,Ajax的参数是你传过去的。
如果一般的分页的话,页面会重新加载,因此也不会有问题。
6 楼 niuyuewanzi 2007-11-29  
/*
 * This function parses ampersand-separated name=value argument pairs from
 * the query string of the URL. It stores the name=value pairs in
 * properties of an object and returns that object. Use it like this:
 *
 * var args = getArgs( );  // Parse args from URL
 * var q = args.q || "";  // Use argument, if defined, or a default value
 * var n = args.n ? parseInt(args.n) : 10;
 */
function getArgs( ) {
    var args = new Object( );
    var query = location.search.substring(1);     // Get query string
    var pairs = query.split("&");                 // Break at ampersand
    for(var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');          // Look for "name=value"
        if (pos == -1) continue;                  // If not found, skip
        var argname = pairs[i].substring(0,pos);  // Extract the name
        var value = pairs[i].substring(pos+1);    // Extract the value
        value = decodeURIComponent(value);        // Decode it, if needed
        args[argname] = value;                    // Store as a property
    }
    return args;                                  // Return the object
}

 


JAVASCRIPT GUIDE 上COPY的.
5 楼 HexUzHoNG 2007-11-29  
仔细一看,学到一个新方法(上班只敢偷偷的看,呵呵)
location.search.substring(1)

不应该每次都解析url的,这样效率太差。
那假如这种情况会不会有问题
比如翻页的情况下,第一次是&page=1,然后xmlhttp请求第二页&page=2

那我再想取这个page值?

---------------------
那个方法是写死的只能取location的,好像不适合这种情况下取值。
4 楼 liudaoru 2007-11-29  
HexUzHoNG 写道
function URLUtils() {
}

URLUtils.getParam = function($url, $param) {

    var reg = "/^.*[\\?|\\&]" + $param + "\\=([^\\&]*)/";
    reg = eval(reg);
	
	var ret = $url.match(reg);
	if (ret != null) {
		return ret[1];
	} else {
		return "";
	}   
}


几次试图学习prototype,mootools,但js功力太弱了,感觉很难读懂.
还是习惯公司写JS的风格些。

现在自己写js,全部像apache commons包一样,写成类似的静态方法去掉用。简单明了,别人也好读、改些。
呵呵。
不应该每次都解析url的,这样效率太差。
另外感觉也没必要用正则,因为split完全足够了。
3 楼 HexUzHoNG 2007-11-29  
function URLUtils() {
}

URLUtils.getParam = function($url, $param) {

    var reg = "/^.*[\\?|\\&]" + $param + "\\=([^\\&]*)/";
    reg = eval(reg);
	
	var ret = $url.match(reg);
	if (ret != null) {
		return ret[1];
	} else {
		return "";
	}   
}


几次试图学习prototype,mootools,但js功力太弱了,感觉很难读懂.
还是习惯公司写JS的风格些。

现在自己写js,全部像apache commons包一样,写成类似的静态方法去掉用。简单明了,别人也好读、改些。
呵呵。
2 楼 liudaoru 2007-11-29  
考虑的比较周全,thx...
1 楼 afcn0 2007-11-28  
见Prototype
  toQueryParams: function(separator) {
    var match = this.strip().match(/([^?#]*)(#.*)?$/);
    if (!match) return { };

    return match[1].split(separator || '&').inject({ }, function(hash, pair) {
      if ((pair = pair.split('='))[0]) {
        var key = decodeURIComponent(pair.shift());
        var value = pair.length > 1 ? pair.join('=') : pair[0];
        if (value != undefined) value = decodeURIComponent(value);

        if (key in hash) {
          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
          hash[key].push(value);
        }
        else hash[key] = value;
      }
      return hash;
    });
  },

相关推荐

    基于JSP的论坛源码

    //不管在什么情况下·有没有中文的接收我们必须设置他的request的setCharacterEncoding方法 ReplyDao replyDao =new ReplyDaoImpl(); int uId=Integer.parseInt(request.getParameter("uId")); int boardId=...

    JSTL JSP 自定义标签 分页

    pagem.setCpage(Integer.valueOf(request.getParameter("cpage"))); }else{ pagem.setCpage(1); } ${PageModel对象}" pageStep="5" javaScript="" styleClass="" viewURL=""/&gt; 祝您使用愉快,谢谢! 作者...

    多文件上传例子(解决中文乱码)

    多文件上传例子,彻底解决中文乱码问题了。...4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。 5、最容易忽略的是使用"":value="&lt;%=paraFiles%&gt;",一定要有引号。

    javascript 实现输入多行动态输入

    JSP用中收集数据:javascript 实现输入多行动态输入 在网上找了一下,只有一篇此类文章,还是PHP的,害得我要特意去看一下PHP,感觉很不好,是一种弱类型的语言,可以不声明就使用,因此,还要在每个变量前加$.不知道那些...

    js实现的点击数量加一可操作数据库

    代码如下: &lt;&#37;... charset=utf-8″ pageEncoding=”utf-8″%&gt; &lt;&#37; String path = request.getContextPath(); String basePath = request.getScheme() + ... String groupId = request.getParameter(“groupId

    Hibernate简单应用

    a.setTeamname(request.getParameter("teamname")); a.setTeamer(request.getParameter("teamer")); a.setMingti(request.getParameter("mingti")); try { op.insert(a); }catch (Exception e){} %&gt; ...

    初学jsp心得

    测试环境为 jdk1.2.2 jswdk-1.0 winnt4.0中文版。...jsp中对应asp中的request.form()和request.querystring()的解决方法。 jsp中取得参数没有form和queryString之分,都是通过request.getParameter(XXXX

    ajax 提交数据到后台jsp页面及页面跳转问题

    String user=request.getParameter("user1"); String pwd=request.getParameter("pwd1"); login.jsp input 取2参数何用ajax 传给logincheck.jsp $.ajax({ type : "POST", url : baseUrl+"m/module/...

    JSTL - EL表达式详解

    Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getParameter(“XXX”) ,这样的话,对于实际应用还必须进行强制类型转换。而 EL 就将用户从这种类型...

    Jquery自动补全

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String word = request.getParameter("word"); request.setAttribute("word", word); ...

    JSTL与EL表达式

    Web服务器对于request请求参数通常会以String类型来发送,在得到时使用的Java语言脚本就应该是request.getParameter(“XXX”),这样的话,对于实际应用还必须进行强制类型转换。而EL就将用户从这种类型转换的繁琐...

    客户端模拟服务器端的Request发送和获得参数

    (function(){ ...&lt;script type="text/javascript" src="客户端模拟服务器端的Request发送和获得参数.js"&gt; document.write(Request.getParameter("a")) document.write(" "+document.URL) &lt;/script&gt;

    小型bbs jsp源代码

    String name=new String(request.getParameter("name").getBytes("ISO8859_1"),"GBK"); //将中文字符转换成标准字符的写法 String password=new String(request.getParameter("password").getBytes("ISO8859_1"),...

    基于mysql+qrcode的jsp数据库可视化技术

    本文就mysql数据表查询为例,在request.getParameter()取参数的基础和canvas画布布置之间的数据库交流的方法上, 探索了一个可行的数据库可视化技术的方法。 text:””这是qrcode.js的一个语句 request....

    EL表达式语言.pdf

    request.getParameter(“参数名”),但是这样的话,对于实际应用还必须进行强制类型转 换。而 EL 就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用 EL 表达 式取得的值,而不用关心它是什么类型

    在jsp页面如何获得url参数

    当一个url过来时,如:http://localhost:8080/pro/demo/hello.jsp?name=john,在hello.jsp页面,我们可以这样得到name的值: 代码如下: &lt;... String name = request.getParameter(“name”);//用reques

    求职 招聘 信息系统

    stmt.executeUpdate("update scott.jobnews set click=click+1 where id='"+request.getParameter("id")+"'"); String sqlname; sqlname="select * from scott.jobnews where id= '"+request.getParameter("id")+...

    一个用JSP做的日历

    &lt;!– File name:calendar.jsp –&gt; ... month=request.getParameter(month); year =request.getParameter(year); %&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=Content-Type content=text/ht

    regedit.jsp 表单注册用户名密码

    String password=request.getParameter("userpassword"); String s=request.getParameter("selectlogrole"); String str="select username from userinfo where username='"+name+"'"; ResultSet rs=query....

    ajax树形展示,JavaScript

    String parentID = request.getParameter("parent");//获得id的值 if (parentID!=null&&!parentID.equals(""))//如果不为null和空 { Category category = new Category(Integer.parseInt(parentID));//创建...

Global site tag (gtag.js) - Google Analytics