关于AJAX提交参数的问题

问题描述

url='processJsonRequest.action?operationFlag=Q&operationFlag=Q1';postData="operationFlag=ghost";提交给服务器的时候,operationFlag其实是个字符串数组。我的问题是:为什么通过request.getParameter("operationFlag");获得的参数是Q,而不是ghost.为什么url中的参数优先于postData中的参数??有什么依据可以参考?

解决方案

解决方案二:
这个不是优先的问题,是你的请求方法的问题,你的请求方法是get就用URL上的参数,如果你的请求方法是post,就会用postData中的参数
解决方案三:
Lumia10200说的不正确:我是用的就是POST方法提交数据的。而且后台断点后,是能看到operationFlag数组的,且长度是3.
解决方案四:
引用2楼King6860的回复:

Lumia10200说的不正确:我是用的就是POST方法提交数据的。而且后台断点后,是能看到operationFlag数组的,且长度是3.

request.getParameter只能取出一个的
解决方案五:
我主要问题是:为什么url中的参数优先于postData中的参数??有什么依据可以参考?
解决方案六:
刚BAIDU了一下,搜索到一个相关西信息:http://zhidao.baidu.com/link?url=OJ4Mlx_Mwyu_Ps1uhahXja2kMvsimplI72qaYaatv8ldqfSbxzquSZCZ0zqEcGYbuLNV9NfE5EoqXrvOcCmtv_Request从几个集合取数据是有顺序的,从前到后的顺序依次是QueryString,Form,最后是ServerVariables。Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止,后面的就不管了。当然上面给的例子像是ASP.NET,但测试结果符合servlet获得结果相同。
解决方案七:
引用5楼King6860的回复:

刚BAIDU了一下,搜索到一个相关西信息:http://zhidao.baidu.com/link?url=OJ4Mlx_Mwyu_Ps1uhahXja2kMvsimplI72qaYaatv8ldqfSbxzquSZCZ0zqEcGYbuLNV9NfE5EoqXrvOcCmtv_Request从几个集合取数据是有顺序的,从前到后的顺序依次是QueryString,Form,最后是ServerVariables。Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止,后面的就不管了。当然上面给的例子像是ASP.NET,但测试结果符合servlet获得结果相同。

学习了。。。
解决方案八:
getParameterjava.lang.StringgetParameter(java.lang.Stringname)ReturnsthevalueofarequestparameterasaString,ornulliftheparameterdoesnotexist.Requestparametersareextrainformationsentwiththerequest.ForHTTPservlets,parametersarecontainedinthequerystringorpostedformdata.Youshouldonlyusethismethodwhenyouaresuretheparameterhasonlyonevalue.Iftheparametermighthavemorethanonevalue,usegetParameterValues(java.lang.String).Ifyouusethismethodwithamultivaluedparameter,thevaluereturnedisequaltothefirstvalueinthearrayreturnedbygetParameterValues.Iftheparameterdatawassentintherequestbody,suchasoccurswithanHTTPPOSTrequest,thenreadingthebodydirectlyviagetInputStream()orgetReader()caninterferewiththeexecutionofthismethod.

ServletAPI-ONLINE上其实讲得已经很清楚了。只是总用BAI-DU,忽略了API。从上文中可以看出,(Iftheparameterdatawassentintherequestbody,suchasoccurswithanHTTPPOSTrequest),servlet推荐使用getInputStream()orgetReader()来解决多个重名参数(有的在QueryString,有的在POST-DATA),如何获得POST-DATA中的同名参数的问题。由此判断,ServletRequest在多个重名参数(有点在QueryString,有的在POST-DATA)这种情形下,Request.getParameter()是优先获得QueryString中的参数的。
解决方案九:
引用7楼King6860的回复:

getParameterjava.lang.StringgetParameter(java.lang.Stringname)ReturnsthevalueofarequestparameterasaString,ornulliftheparameterdoesnotexist.Requestparametersareextrainformationsentwiththerequest.ForHTTPservlets,parametersarecontainedinthequerystringorpostedformdata.Youshouldonlyusethismethodwhenyouaresuretheparameterhasonlyonevalue.Iftheparametermighthavemorethanonevalue,usegetParameterValues(java.lang.String).Ifyouusethismethodwithamultivaluedparameter,thevaluereturnedisequaltothefirstvalueinthearrayreturnedbygetParameterValues.Iftheparameterdatawassentintherequestbody,suchasoccurswithanHTTPPOSTrequest,thenreadingthebodydirectlyviagetInputStream()orgetReader()caninterferewiththeexecutionofthismethod.

ServletAPI-ONLINE上其实讲得已经很清楚了。只是总用BAI-DU,忽略了API。从上文中可以看出,(Iftheparameterdatawassentintherequestbody,suchasoccurswithanHTTPPOSTrequest),servlet推荐使用getInputStream()orgetReader()来解决多个重名参数(有的在QueryString,有的在POST-DATA),如何获得POST-DATA中的同名参数的问题。由此判断,ServletRequest在多个重名参数(有点在QueryString,有的在POST-DATA)这种情形下,Request.getParameter()是优先获得QueryString中的参数的。

api果然diao
解决方案十:
URL中的GET传参在tomcat,weblogic等应用服务器中通常被解析为queryString,getParameter都是取的这里面的值如果是post传参,默认会把post里面key=value也放到queryString中,因此request.getParameter取的是一样的效果如果是二者中有重名参数,肯定会有优先级的问题
解决方案十一:
提交表单的时候是可以提交多个相同名称的参数的,比如一个表单中可以提交多个<inputname='name'/>这样的参数,在后台的时候就应该使用String[]names=request.getParameterValues("name");这样来获取相同的多个值。楼主这样提交参数实质就是提交了表单中重名的参数了。

时间: 2024-10-30 06:21:46

关于AJAX提交参数的问题的相关文章

asp.net中mvc使用ajax提交参数的匹配问题解决探讨

本文为大家介绍下使用javaScript解决asp.net中mvc使用ajax提交参数的匹配问题,遇到类似情况的朋友可以参考下,希望对大家有所帮助   想到在asp.net的mvc中如果使用ajax向服务端传递参数时如果参数是一个类或者是个数组(或List集合)以及更复杂的对象时,服务端总是会发 生取不到值的情况,当然网上也有很多解决的例子,但都是在服务端想办法来解决的(比如将json转换为字符串,再在服务端反序列化为一个对象),为何不能 在客户端就把这个问题搞定. 其实问题没那么复杂,那是因为

Ajax提交参数的值中带有html标签不能提交成功的解决办法(ASP.NET)

最近在公司做资源及文章上传功能遇到一个小问题,被坑了好半天. 该功能就类似利用富文本编辑器发布信息,但是用Ajax提交数据,因此提交参数值中不可避免的含有html标签. 在本地运行代码一直没问题,总是可以提交成功,但是代码部署到线上就不能成功提交数据了,被坑了好久,找了好半天才找到问题所在. 提交不成功的原因是因为我的提交数据中含有html标签,然后直接无法请求到我的目标地址. 然后解决办法如下: 1.在页面用JS的Base64编码(类似加密)带有html标签的参数值. 2.在目标地址获取到数据

asp.net中mvc使用ajax提交参数的匹配问题解决探讨_AJAX相关

想到在asp.net的mvc中如果使用ajax向服务端传递参数时如果参数是一个类或者是个数组(或List集合)以及更复杂的对象时,服务端总是会发生取不到值的情况,当然网上也有很多解决的例子,但都是在服务端想办法来解决的(比如将json转换为字符串,再在服务端反序列化为一个对象),为何不能在客户端就把这个问题搞定. 其实问题没那么复杂,那是因为在jquery提交Array的数据时,提交的时候始终会在名称后面加上"[]", 问题就出在这里.另外在服务端对数组和内嵌的js对象进行解析时,需要

Jquery Ajax 提交表单 JSP页面局部刷新 javascript 中写的code不执行

问题描述 下面是我碰到的具体问题,一直很是郁闷!我贴下我的代码,如果解决了,小弟不甚感激...js 代码://ajax 执行成功的回调函数function showSuccess(data){alert('执行成功!!!');}function showError(){alert('出错啦!!!');}//ajax提交采购或者销售项function addGoodsItems(){if($("#goodsName").val() == ""){alert('货品不能

ajax提交到servelt获取参数有乱码的解决方法

 这篇文章主要介绍了ajax提交到servelt获取参数有乱码的解决方法,需要的朋友可以参考下 在这里,假设读者了解基本的    ajax    技术或更多.我仅仅阐述一个现象,一个解决方法:原因.    原理,同样不清楚    --    我们先从简单的着手,    servlet传值到JSP页面js    脚本中,利用脚本将相关值显示在页面.解决这个方向(servlet--javascript)的中文乱码问题很简单.只需要在    servlet中,添加一个    编码设置:   代码如下:

ajax提交请求出现错误,状态码400。网上结果说参数问题。但是请问怎么改动?

问题描述 ajax提交请求出现错误,状态码400.网上结果说参数问题.但是请问怎么改动? 我目前大致认为可能是两个时间参数有问题,但是不知道怎么去修改. 时间参数标签: name="startTime" data-options=" editable:false,required:true,formatter:myformatter" value=""> 请问怎么处理? 补充:找到问题了,因为我改变了时间的显示格式,然后就产生以上的错误.但

介绍ajax提交url与ajax提交表单的区别

 本篇文章主要是对ajax提交url与ajax提交表单的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1:ajax自已构造一个url,这种方式传参数要用Data,不能用于表单提交.  例:    代码如下:          function createHtml(id){              $("#reloading").show();               //edit_bg是个div,提交时显示,这样可以使背景页面不能操作.             

Ajax提交与传统表单提交的区别说明

  本篇文章主要是对Ajax提交与传统表单提交的区别进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Ajax提交是通过js来提交请求,请求与响应均由js引擎来处理,页面不会刷新,用户感觉不到实际上浏览器发出了请求.比如说我们希望网页总是显示最新的新闻,而又不想老是去点刷新按钮,我们就可以用Ajax机制来实现.网上的客服软件也是ajax请求的一个比较好的案例.传统的请求页面将实现刷新,因此局限性很大. 1.为什么用AJAX? 使用AJAX,用户对Web的体验会更"敏捷":

解决ajax提交表单时中文乱码的问题

网上搜索结合自己开发过程中遇到的情况,整理一下,以备忘: Ajax表单提交数据出现乱码和解决办法    //要传递的参数   var queryString = "firstName=" + firstName + "&lastName=" + lastName                          + "&birthday=" + birthday;    function   //GET方式提交    doRequ