• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ajax快速解决参数过长无法提交成功的问题

    查了很多资料都说,get方法的参数是有限制的,post方法的参数的长度是无限制,这也是post相比get的优势一直。

    在ajax中使用post方法,用常规的参数格式:param1=a1param2=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快速解决参数过长无法提交成功的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • ajax上传时参数提交不更新等相关问题
    • jQuery中ajax的使用与缓存问题的解决方法
    上一篇:Ajax解决缓存的5种方法总结(推荐)
    下一篇:使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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