ここで問題が発生しています。ajax を使用して「+」を含むパラメーターをコントローラーに渡すと、スペースに置き換えられます。
Tom+Jerry+Garfield
例として、 ajax を使用してvalue = を渡します。コントローラーで System.out.println() を使用すると、 が表示されますTom Jerry Garfield
。問題がないように見える他の特殊文字を使用してみました。
助けてください。前もって感謝します。
一部のGET
andPOST
リクエスト (ほとんどの場合、URL またはフォーム経由) では、スペースはサーバーに渡される前に「+」(プラス) 記号としてエンコードされます。GET
通常のリクエストを実行すると、この動作を確認できます。次のようなものが表示さgoogle.com?q=test+example
れます。 ajax GET/POST リクエストを介してプラス記号を渡したい場合は、それを「urlencode」する必要があります。の URL エンコードされた値は+
です%2B
。
また、次の点に注意してください。
以下で回答されているように、javascript の encodeURIComponent() 関数を使用できます。
+
URL デコード後にスペースとしてデコードされます。を渡したい場合は+
、エンコードする必要があります。
コントローラーに値を渡すと、リクエストの間にモデル バインダーが配置されます。ajax 呼び出しが行われると、URL とリクエストがエンコードされます。URL デコード形式の " " (スペース) 文字は、"+" にエンコードされます。
一方、Model Binder はリクエストをデコードし、パラメーターを抽出してコントローラーに渡すため、"+" は " " に変換されます。しかし、ここで問題は、なぜ「+」をセパレーターとして渡すのでしょうか??