• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >AJAX > ajax快速解决参数过长无法提交成功的问题

ajax快速解决参数过长无法提交成功的问题

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了ajax快速解决参数过长无法提交成功的问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

查了很多资料都说,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
});
</div>

这样使用的时候,发现若是参数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();
}
</div>

这时候,我们的json数据都在sb对象中了,接下来只需要解析json对象就可以了:

JSONObject jobject = JSONObject.fromObject(sb.toString());
String requestTag = jobject.getString("requestTag");
String content = jobject.getString("content");
</div>

到这里,我们就可以获取到content的了。

以上这篇ajax快速解决参数过长无法提交成功的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11用AJAX技术实现在自己Blog上聚合并显示朋友Blog的最新文章
  • 2017-05-11ajax实现页面加载和内容删除
  • 2017-05-11Ajax跨域的完美解决方案
  • 2017-05-11如何成为AJAX高手
  • 2017-05-11Ajax修改购物车示例
  • 2017-05-11完美解决ajax访问遇到Session失效的问题
  • 2017-05-11AJAX使用get与post模式的区别分析
  • 2017-05-11AJAX javascript的跨域访问执行
  • 2017-05-11判断请求头中是否含有某属性来判断是否是ajax请求
  • 2017-05-11AJAX开发简略 (第一部分)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • AJAX显示加载中并弹出图层遮挡页面的实现示例
    • 防止重复发送Ajax请求的解决方案
    • PHP匹配连续的数字或字母的正则表达式
    • 简单实现Ajax无刷新分页效果
    • Ajax按需读取数据生成下级菜单
    • jQuery Ajax 实例详解 ($.ajax、$.post、$.get)
    • ajax(iframe)无刷新提交表单、上传文件
    • jQuery Ajax方式上传文件的方法
    • AJAX技术基础介绍
    • asp简单的ajax留言板(采用三层模式)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有