您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

ajax的参数过长无法提交如何处理

2024/7/31 19:34:18发布46次查看
这次给大家带来ajax的参数过长无法提交如何处理,处理ajax参数过长无法提交的注意事项有哪些,下面就是实战案例,一起来看一下。
查了很多资料都说,get方法的参数是有限制的,post方法的参数的长度是无限制,这也是post相比get的优势一直。
在ajax中使用post方法,用常规的参数格式:param1=a1¶m2=a2 ,当参数长度过长时,依然提交不成功。比如我们经常这样写一个ajax的post请求:
$.ajax({   type: post,  // post or get   contenttype:application/json;charset=utf-8,   data: “requesttag=”+tag+&content=+content,  //请求参数   url: postmockjson,   //地址   datatype: text,   error: function (err) {    outlog(错误+err);   },   success: onsavesuccess });
这样使用的时候,发现若是参数2:content内容过多时,比如我传的是一个比较大的文本内容,我在后台服务(我用的是servlet)中获取时:
string content= request.getparameter(content);
这里的content的值,为null。
还有一种快捷的方法可以查看ajax请求是否成功,使用f12开发者工具进行调试,在执行完ajax代码后,在f12工具中的network选项页面中,可以看到发起的请求,这时候看到的请求的参数有错误提示。
解决方法:
ajax的参数格式还有另外一种写法:json格式的请求参数,我可以写成这样:
var param = {requesttag:\+requesttag+\,content:\+content+\};(ps:注意json格式要正确)
这个时候,若是使用f12进行debug,可以看到请求的参数的数据都是正确的。
那么问题来了,我在servlet中获取的content依旧是null,这是为什么呢???
由于请求参数是一个json数据块,所以这种request.getparameter(“content”)方法,当然获取不到数据啦,因为它不会给我们解析json数据。
那么我们传递的参数数据在哪里呢?
重点来了:数据都在request对象里。
那么我们就用最原始的方法,通过数据流的方法获取传递的数据,如下:
request.setcharacterencoding(utf-8); stringbuilder sb = new stringbuilder(); try(bufferedreader reader = request.getreader();) { char[] buff = new char[1024]; int len;  while((len = reader.read(buff)) != -1) {   sb.append(buff,0, len);   } }catch (ioexception e) {    e.printstacktrace(); }
这时候,我们的json数据都在sb对象中了,接下来只需要解析json对象就可以了:
jsonobject jobject = jsonobject.fromobject(sb.tostring()); string requesttag = jobject.getstring(requesttag); string content = jobject.getstring(content);
到这里,我们就可以获取到content的了。
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
ajax跨域访问报错501怎么处理
使用ajax实现根据人力资源系统数据增加oa账号的方法
以上就是ajax的参数过长无法提交如何处理的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product