ホームページ >バックエンド開発 >PHPチュートリアル >パラメータが長すぎて正常に送信できない問題を Ajax ですぐに解決します。

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

小云云
小云云オリジナル
2018-01-08 17:06:412616ブラウズ

この記事では主に、長すぎて正常に送信できないパラメーターの問題に対する 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: コンテンツが多すぎる場合、たとえば、比較的大きなテキスト コンテンツを渡し、それを提供していることがわかります。バックグラウンドで (サーブレットを使用します):

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");

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

関連する推奨事項:

Ajax 送信パラメーターの値に HTML タグが含まれているため、正常に送信できません。問題を解決するにはどうすればよいですか?

Ajax がファイルとその他のパラメーターをアップロードする

JavaScript パラメーターを渡す図チュートリアル。

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

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