今回は、ajaxパラメータが長すぎて送信できない場合の対処方法を説明します。 ajaxパラメータが長すぎて送信できない場合の注意事項は何ですか。 、見てみましょう。
色々な情報を確認したところ、get メソッドのパラメータは制限されているのに対し、post メソッドのパラメータの長さは無制限であると言われています。これは get に対する post の利点でもあります。 Ajax の post メソッドを使用し、従来のパラメーター形式 (param1=a1¶m2=a2) を使用します。パラメーターの長さが長すぎると、送信はまだ失敗します。たとえば、私たちはよく次のような ajaxpost 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 });
サーブレットから取得したときを使用します):
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(); }
JSONObject jobject = JSONObject.fromObject(sb.toString()); String requestTag = jobject.getString("requestTag"); String content = jobject.getString("content");
Ajax クロスドメイン アクセス エラー 501 に対処する方法
Ajax を使用して人事システム データに基づいて OA アカウントを追加する方法
以上がajaxパラメータが長すぎて送信できない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。