この記事では主に、長すぎて正常に送信できないパラメーターの問題に対する 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 がファイルとその他のパラメーターをアップロードする
以上がパラメータが長すぎて正常に送信できない問題を Ajax ですぐに解決します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。