リクエスト内の文字列をjspサーブレットのpostメソッドに戻そうとしていますが、文字列が切り捨てられています。文字列の長さは40K以上です
ポストコールは次のようになります。 $.post("assignedStructure", "data=" + str);
postメソッドでは、リクエストパラメータからデータを取得できますが、文字列が切り捨てられています。
(JS呼び出しを介さずに)フォームを送信する場合、同じ文字列は切り捨てられず、完全です。変更を処理して保存するためにサーバー側にデータを取得する必要があるため、ページ全体を投稿したくありません(文字列は基本的に、保存する必要のある情報を含むjson文字列です)。
postメソッドでデータを取得する方法は次のようになります。
if(request.getParameter("data") != "" && request.getParameter("data") != null"){
//get the orgs from the request param
ArrayList<Organization> orgs = Util.CreateDataArray(request .getParameter("data"));
//rest of method.......
}
public static ArrayList<Organization> CreateDataArray(String jsonString) {
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(jsonString);
//rest of method........
ajax投稿またはjqueryajax投稿の文字列の最大長はありますか?
助けてくれてありがとう。
おそらくあなたはstr
正しいエンコーディングをしていません。多分&
それに何かがあるように。
また、補足として、str == ""
Javaで文字列を比較する適切な方法ではありません。"".equals(str)
またはである必要がありstr.equals("")
ます; ==
Javaで文字列を使用すると、内容ではなくメモリ位置(つまり、ポインタの同等性)が比較されます。str == null
ただし、null
はポインタなので、使用します。
私は当初、あなたのAjax構文が間違っていて、次のようにすべきだと思っていました。
$.post( "assignedStructure", { data: str } );
ドキュメントを参照してください。ではdata
、関数のセクション彼らはいつもの例でJSONオブジェクトを使用し、文字列ではありません:だから{ data: str }
ではありません"data=" + str
。しかし、Athonyがコメントで指摘しているように、どちらの方法でも実行できると言っています。私にとっては、var=val
POSTで構文を見るのは奇妙に思えますが、一見するとGETとPOSTを混同しているように見えるためです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加