ホームページ >ウェブフロントエンド >jsチュートリアル >ajaxパラメータが長すぎて送信できない場合の対処方法

ajaxパラメータが長すぎて送信できない場合の対処方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-03 09:49:391974ブラウズ

今回は、ajaxパラメータが長すぎて送信できない場合の対処方法を説明します。 ajaxパラメータが長すぎて送信できない場合の注意事項は何ですか。 、見てみましょう。

色々な情報を確認したところ、get メソッドのパラメータは制限されているのに対し、post メソッドのパラメータの長さは無制限であると言われています。これは get に対する post の利点でもあります。

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

post requestを書きます:

$.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");
この時点で、コンテンツを取得できます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

Ajax クロスドメイン アクセス エラー 501 に対処する方法

Ajax を使用して人事システム データに基づいて OA アカウントを追加する方法

以上がajaxパラメータが長すぎて送信できない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:JS - 正規表現次の記事:JS - 正規表現