`
liudaoru
  • 浏览: 1573898 次
  • 性别: 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属性的用法

    request.getParameter() 和 request.getAttribute() 是两个最常用的方法来获取客户端的请求信息,但是它们的用法和作用域却有很大的区别。 request.getParameter() 方法是用来获取客户端通过 HTTP 协议传递的参数,...

    request.getParameter()取值为null的解决方法

    在Web开发中,获取客户端传递给服务器的数据是一种常见需求,通常使用`request.getParameter()`方法从`HttpServletRequest`对象中获取表单数据或者URL参数。然而,在实际应用中,开发者有时会遇到`request....

    Jsp的request的用法

    在本篇文章中,我们将深入探讨`request.getParameter()`和`request.setAttribute()`以及`request.getAttribute()`的区别,并提供相关示例来帮助理解它们的用法。 **一、request.getParameter() 和 request....

    基于JSP的论坛源码

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

    第4章 JSP和Web页面的交互.ppt

    首先,我们通过一个简单的实例——初步体验,了解了JSP中`request.getParameter()`方法的基本用法。在这个例子中,HTML页面包含一个表单,用户可以输入姓名和兴趣。当用户点击提交按钮后,这些数据被发送到服务器,...

    javaWeb-Servlet、mysql实现用户增删改查

    4. **参数获取**:通过 `getParameter()` 方法从请求中获取表单提交的数据。 5. **业务逻辑处理**:调用DAO层的方法来执行数据库操作,如添加用户 (`insertUser()`) 或更新用户 (`updateUser()` )。 6. **重定向**:...

    音乐管理系统(servlet传参数)

    当用户点击“购买”按钮时,表单数据(如CD ID和数量)会被封装在HTTP请求的主体中,Servlet通过`request.getParameter()`方法同样可以获取。POST方法可以处理更大、更复杂的数据,适合购物车结算这类操作。 在实现...

    URL的参数中有加号传值变为空格的问题(URL特殊字符)

    1.URL特殊字符需转义 2.空格换成加号(+)  3.正斜杠(/)分隔目录和子目录  4.问号(?)分隔URL和查询  ...则提交时通过request.getParameter可以分别取得act和state的值。 如果你的本意是act=’go&state=5’这个字

    java+jsp代码实现从FTP服务器上传下载文件

    int audioFtpPort = Integer.parseInt(request.getParameter("_audioFtpPort")); String audioFtpUser = request.getParameter("_audioFtpUser"); String audioFtpPwd = request.getParameter("_audioFtpPwd"); ...

    在jsp中如何用下拉菜单实现动态查询

    request.getParameter("select").equals("all")) { %&gt; ``` 这段代码包含了一个简单的HTML表单,其中有一个下拉菜单用于选择查询条件(全部、用户ID或用户名),一个文本框用于输入查询关键字,以及一个提交按钮触发...

    JSTL JSP 自定义标签 分页

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

    jsp+mysql数据库登陆功能实现代码.pdf

    在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)和MySQL数据库来实现一个基本的用户登录功能。首先,让我们从登录界面开始。 **1. 登录界面(adminlogin.html)** 这是一个简单的HTML页面,包含一个表单...

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

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

    基于JSP和MySQL的留言板系统设计与实现

    String youxiang = request.getParameter("youxiang"); String biaoti = request.getParameter("biaoti"); String neirong = request.getParameter("neirong"); // 插入数据的SQL语句 String sql = "INSERT ...

    jsp.rar_html 登录 jsp_html登录界面_jsp

    在这个JSP文件中,`request.getParameter()`方法用于获取前端表单提交的数据。`out.println()`用于向客户端发送错误信息,如果验证失败。一旦验证成功,通常会进一步与数据库交互,例如查询用户是否存在,或者将用户...

    servlet添加和登陆的实现

    String username = request.getParameter("username"); String password = request.getParameter("password"); // 进行数据库验证 if (isValidUser(username, password)) { // 登录成功,可以设置session属性...

    Servlet学习开发登录页面实例源码

    String username = request.getParameter("username"); String password = request.getParameter("password"); if ("admin".equals(username) && "123456".equals(password)) { // 登录成功逻辑 } else { // 登录...

    javascript 实现输入多行动态输入

    本文详细介绍了如何使用JavaScript实现输入多行动态输入的方法,包括前端页面的动态生成以及后端对这些动态数据的处理。这种方式不仅提高了用户体验,还极大地简化了开发人员的工作量。通过上述步骤,您可以轻松地在...

    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

    个人网上银行系统

    String getIdentified = request.getParameter("identified"); String getAddress = request.getParameter("address"); String getBirth = request.getParameter("birth"); String getPwd = request....

Global site tag (gtag.js) - Google Analytics