ajax传参数组之request.getParameterValues

web项目中,一般与后台进行交互,都使用ajax进行数据的提交

在数据提交的过程中,一般为提交数据对象。但是在通常过程中,会使用到传入一系列的数据。如批量删除。

我们可以通过传入数组来实现

  有以下几种方式:

     1、直接传入一个对象数组

    var param = [];
            param.push({"name":"ids", "value":id});
            
            $.ajax({
                type:"POST",
                async:true,  //默认true,异步
                data:param,
                url:"<%=request.getContextPath()%>/manageUser/delManageUser.action",
                success:function(data){

    }})

   2、传入对象

    var param = [];
           param.push(id2);

    param.push(id1);
           $.ajax({
               type:"POST",
               async:true,  //默认true,异步
               data:{
                   ids : param
               },
               url:"<%=request.getContextPath()%>/manageUser/delManageUser.action",
               success:function(data){}

    })

  针对于上面的传值,后台java进行取值。详见如下代码

    @RequestMapping(value="delManageUser")
    @ResponseBody
        public String delManageUser(HttpServletRequest request){
        
    try {
      String[] ids = request.getParameterValues("ids[]");
                for (String id : ids) {

        //todo

      }

    }catch(Exception e){

  }

  }

通过如此取值,即可拿到数组。

下面整理下getParameter和getParameterValues的区间

一、 简单的对比

request.getParameter用的比较多,相对熟悉

request.getParameterValues(String   name)是获得如checkbox类(名字相同,但值有多个)的数据。   接收数组变量 ,如checkobx类型     
request.getParameter(String   name)是获得相应名的数据,如果有重复的名,则返回第一个的值 . 接收一般变量 ,如text类型

例:

1. 三个名字相同的text标签

<input type="text" name="test" value="1" /> 
<input type="text" name="test" value="2" /> 
<input type="text" name="test" value="3" />

request.getParameterValues("test")   ----------------- [1, 2, 3]

request.getParameter("test")             ------------------ 1

${paramValues.test}

${param.test}

2. checkbox

<input type="checkbox" name="habit" value="read">看书

<input type="checkbox" name="habit" value="movie">电影

<input type="checkbox" name="habit" value="game">游戏

request.getParameterValues("habit")

二、与此相关的话题------隐含对象

1. JSP隐含对象(Implicit Object)

所谓隐含对象,是指当编写jsp网页时,不必做任何声明就可以直接使用的对象。 JSP2.0定义了九个隐含对象

request response pageContext session application out conifg page exception

这里只提一下request 和 response 两个对象

request 对象表示客户端请求的内容,比如我们从request中取得了用户输入的内容,实现了javax.servlet.http.HttpServletRequest接口

response对象表示响应客户端的结果。

上面我们使用了request的两个方法getParameter 和 getParameterValues,其实request还有其他几个比较重要的方法,这里只涉及几个获取请求参数的方法

String getParameter(String name)                     取得name的参数值

String[] getParameterValues(String name)        取得所有name的参数值

Enumeration getParameterNames()                  取得所有的参数名称

Map<String, String[]> getParameterMap()        取得request的所有参数的一个映射

//

Returns a java.util.Map of the parameters of this request. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.

Returns:
an immutable java.util.Map containing parameter names as keys and parameter values as map values. The keys in the parameter map are of type String. The values in the parameter map are of type String array.

//

response等其他几个隐含对象也有非常重要的身份,有机会专门整理一下,宣扬一下它们的显赫地位。

2. EL隐含对象

EL即Experssion Language,自JSP2.0后正式成为JSP的标准规范之一,支持Servlet2.4/JSP2.0的Container也就相应的支持EL语法。

一个常见的形式如,<c:out value="${ 3 + 7 * 4}" />

EL的隐藏对象有11个 PageContext PageScope RequestScope sessionScope applicationScope

param paramValues header headerValues cookie initParam

其中param 和 paramValues即对相应ServletRequest.getParameter(String name)和ServletRequest.getParameterValues(String name)

时间: 2024-08-14 10:13:03

ajax传参数组之request.getParameterValues的相关文章

jq中的ajax传参

    一.   jq中的Ajax传参有两种           1.通过url地址来传参    2.通过data来传递参数 1. url来传递参数 function GetQuery(id) { if (id ==1||id==7) { var name = "语文"; $.ajax({ url:"../ajaxHandler/ChartsHandler.ashx?id="+id+"&name="+name +"",

ajax传参到实体类对应字段

之前看公司的代码,从页面ajax传参数到接口类,接口类用一个实体接收.我一直以为c#会自动识别,赋值到同名的字段. 我曾和朋友讨论过,双方辩论.朋友认为c#没有这种功能,没有这样高级匹配的机制.而我因为在项目中使用的是直接传值,并没有做过什么拼接或转换,所以我认为c#会自动把同名的自动赋值.朋友不同意,于是我们觉得代码上见分晓. 打开vs,我们开始调试,写好一段ajax的js,Url就写接口类的路径,参数为一段json,然后接口类那边接收json.写到接口类的时候,我想要接收ajax传来的数据,

2015/10/19总结:ajax传参、jquery.validate自定义日期校验

以下内容仅来自于日常实践零碎回顾.总结,不保证正确性,欢迎路过的大神指点指点! 1.这几天一直在写jsp前端页面,了解到前端与后端数据交互数据有两种.一种是form 的submit方式提交,这种方法可以在表单里通过声明属性:method = 'post'声明表单提交的方式(要与后台的controller的RequestMethod属性对应),  action = ‘ url’声明表单提交后跳转的页面(好像采用这种方式一般都要跳转页面).另一种方式就是通过ajax提交,ajax提交和响应的数据方式

ajax传参在ie8中的问题

/*获取隐藏域数据,并将数据转为数组*/ var Ids = x.val(); var eachParamer = Ids.substring(0,Ids.length-1).split(","); $.ajax({ url: m+"/selfprogram/selfProgram/showParam?paramIds="+Ids,", type: "post", dataType:"json", data:{&qu

day8——ajax传参到action(Struts2)

第一种:url+?+参数 jsp中: $(function(){ $("[name='delemp']").click(function(){ $this = $(this); $delid = $this.attr("delid"); if(confirm("确认删除该条数据吗?")){ $.ajax({ type:"get", url:"deleteemployeebyid?delid="+$delid

formValidator向struts2 ajax传参验证

话不多说,直接上代码 页面head里面的formvalidator验证配置 <script type="text/javascript"> $(document).ready(function() { $.formValidator.initConfig({ formID : "form1", theme : "ArrowSolidBox", wideWord : false, submitOnce : true, onError :

如何用Ajax传一个数组数据

PHP接收多个同名复选框信息不像ASP那样自动转换成为数组,这给使用带来了一定不便.但是还是有解决办法的,就是利用javascript做一下预处 理.多个同名复选框在javascript中还是以数组的形式存在的,所以在表单提交之前可以利用javascript把复选框中的信息组合成一个字符数 组赋值给表单中的隐藏元素,然后用PHP中的explode函数解析此数组,这样就可以实现复选框信息的传递了.下面举例说明.缙云县外国专家局 假设有这样一个表单: <form name="form1&quo

ajax传参里含有特殊字符的坑

问题场景:今天在测试自己手上的页面功能时,发现一个小bug,在用ajax向后台发数据时,只要参数中出现一些特殊字符,控制台会报错http 400的问题,其实就是特殊字符服务器不能解析.好了,问题是找到了,但是改如何解决勒! 首先想到的就是把特殊字符进行编码在传递,但是自己写检测特殊字符函数代码时发现,这要检测的特殊字符数不胜数,完全正则不过来.上网搜了一下,发现有一个现成的方法:encodeURIComponent();放在代码上跑一下,任务解决了!哈哈.问题解决了,但是还是要看看其中的更深的原

XMLHttpRequest Ajax传参,回传过程中不允许再次点击

先记录一下关于状态码的问题吧,因为这里面涉及到两个属性readyState和status: readyState是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状态. status是XMLHttpRequest对象的一个属性,表示响应的HTTP状态码. 当readyState==4  完成响应状态:此时,已经完成了HTTP响应的接收,当status==200   请求成功.例如200状态码,表示请求所希望的响应头或数据体将随此响应返回. 所以当r