国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

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

2024-09-01 08:33:48
字體:
來源:轉載
供稿:網友

查了很多資料都說,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快速解決參數過長無法提交成功的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中卫市| 台前县| 怀宁县| 庄浪县| 耒阳市| 惠东县| 馆陶县| 乌拉特前旗| 静安区| 大渡口区| 东乡县| 浮山县| 务川| 岳普湖县| 边坝县| 河曲县| 武夷山市| 富宁县| 永吉县| 铜山县| 察雅县| 司法| 仙桃市| 枣强县| 固安县| 连城县| 宣威市| 分宜县| 尼玛县| 渑池县| 安平县| 尉犁县| 积石山| 松原市| 梁河县| 印江| 周口市| 新建县| 固安县| 平利县| 静安区|