欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年12月12日 09:43:01   投稿:jingxian  
下面小編就為大家?guī)硪黄猘jax快速解決參數(shù)過長無法提交成功的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

在ajax中使用post方法,用常規(guī)的參數(shù)格式:param1=a1&param2=a2 ,當參數(shù)長度過長時,依然提交不成功。比如我們經(jīng)常這樣寫一個ajax的post請求:

$.ajax({
  type: "post",  // post or get
  contentType:"application/json;charset=utf-8",
  data: “requestTag=”+tag+"&content="+content,  //請求參數(shù)
  url: "postMockJson",   //地址
  dataType: "text",
  error: function (err) {
   outLog("錯誤"+err);
  },
  success: onSaveSuccess
});

這樣使用的時候,發(fā)現(xiàn)若是參數(shù)2:content內(nèi)容過多時,比如我傳的是一個比較大的文本內(nèi)容,我在后臺服務(我用的是servlet)中獲取時:

String content= request.getParameter("content");

這里的content的值,為null。

還有一種快捷的方法可以查看ajax請求是否成功,使用F12開發(fā)者工具進行調試,在執(zhí)行完ajax代碼后,在F12工具中的network選項頁面中,可以看到發(fā)起的請求,這時候看到的請求的參數(shù)有錯誤提示。

解決方法:

ajax的參數(shù)格式還有另外一種寫法:json格式的請求參數(shù),我可以寫成這樣:

var param = "{requestTag:\""+requestTag+"\",content:\""+content+"\"}";
(ps:注意json格式要正確)

這個時候,若是使用F12進行debug,可以看到請求的參數(shù)的數(shù)據(jù)都是正確的。

那么問題來了,我在servlet中獲取的content依舊是null,這是為什么呢???

由于請求參數(shù)是一個json數(shù)據(jù)塊,所以這種request.getParameter(“content”)方法,當然獲取不到數(shù)據(jù)啦,因為它不會給我們解析json數(shù)據(jù)。

那么我們傳遞的參數(shù)數(shù)據(jù)在哪里呢?

重點來了:數(shù)據(jù)都在request對象里。

那么我們就用最原始的方法,通過數(shù)據(jù)流的方法獲取傳遞的數(shù)據(jù),如下:

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數(shù)據(jù)都在sb對象中了,接下來只需要解析json對象就可以了:

JSONObject jobject = JSONObject.fromObject(sb.toString());
String requestTag = jobject.getString("requestTag");
String content = jobject.getString("content");

到這里,我們就可以獲取到content的了。

以上這篇ajax快速解決參數(shù)過長無法提交成功的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論