ajax快速解決參數過長無法提交成功的問題_AJAX相關

來源:互聯網
上載者:User

查了很多資料都說,get方法的參數是有限制的,post方法的參數的長度是無限制,這也是post相比get的優勢一直。

在ajax中使用post方法,用常規的參數格式:param1=a1&param2=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快速解決參數過長無法提交成功的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.