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