ホームページ > ウェブフロントエンド > jsチュートリアル > Ajax はパラメータが長すぎて正常に送信できない問題を迅速に解決します

Ajax はパラメータが長すぎて正常に送信できない問題を迅速に解決します

亚连
リリース: 2018-05-23 10:35:37
オリジナル
2578 人が閲覧しました

今回は、パラメーターが長すぎて正常に送信できない問題をすばやく解決するための ajax に関する記事をお届けします。今からそれを皆さんと共有し、皆さんの参考にしてください。

いろいろ調べてみると、getメソッドのパラメータは制限されているのに対し、postメソッドのパラメータの長さは無制限だそうです。これもgetよりもpostの利点です。

Ajax の post メソッドを使用し、従来のパラメーター形式 (param1=a1¶m2=a2) を使用します。パラメーターの長さが長すぎると、送信はまだ失敗します。たとえば、私たちはよく次のような ajax 投稿リクエストを書きます:

$.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 の内容が多すぎることがわかります。たとえば、比較的大きなテキスト コンテンツを渡している場合、そして私はそれをバックグラウンドで提供しています(サーブレットから取得するとき):

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

ここでの content の値は null です。

Ajax リクエストが成功したかどうかを確認する簡単な方法もあります。F12 開発者ツールを使用してデバッグすると、F12 ツールのネットワーク オプション ページで開始されたリクエストを確認できます。 、要求されたパラメータにエラー メッセージがあります。

解決策:

ajaxのパラメータ形式を記述する別の方法があります: json形式でパラメータをリクエストします。次のように記述できます:

var param = "{requestTag:""+requestTag+" ", content:""+content+""}";
(ps: 正しい json 形式に注意してください)

このとき、F12 を使用してデバッグすると、要求されたパラメーターのデータが正しい。

それでは、サーブレットで取得したコンテンツが依然として null であるのはなぜでしょうか。 ? ?

リクエストパラメータはjsonデータブロックであるため、当然のことながら、 request.getParameter("content") メソッドはjsonデータを解析しないため、データを取得できません。

では、渡すパラメータデータはどこにあるのでしょうか?

ここで重要な点があります。データはすべてリクエスト オブジェクト内にあります。

次に、次のように、最も原始的な方法を使用して、データ フロー メソッドを通じて渡されたデータを取得します:

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");
ログイン後にコピー

この時点で、コンテンツを取得できます。

上記は私があなたのためにまとめたものです。

関連記事:

AjaxSubmit() がファイルを送信する

Ajax が冗長な更新を解決するための 2 つの方法

Ajax の同期と非同期の問題の簡単な分析と解決策

以上がAjax はパラメータが長すぎて正常に送信できない問題を迅速に解決しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート