6

ここで問題が発生しています。ajax を使用して「+」を含むパラメーターをコントローラーに渡すと、スペースに置き換えられます。

Tom+Jerry+Garfield例として、 ajax を使用してvalue = を渡します。コントローラーで System.out.println() を使用すると、 が表示されますTom Jerry Garfield。問題がないように見える他の特殊文字を使用してみました。

助けてください。前もって感謝します。

4

3 に答える 3

11

一部のGETandPOSTリクエスト (ほとんどの場合、URL またはフォーム経由) では、スペースはサーバーに渡される前に「+」(プラス) 記号としてエンコードされます。GET通常のリクエストを実行すると、この動作を確認できます。次のようなものが表示さgoogle.com?q=test+exampleれます。 ajax GET/POST リクエストを介してプラス記号を渡したい場合は、それを「urlencode」する必要があります。の URL エンコードされた値は+です%2B

また、次の点に注意してください。

以下で回答されているように、javascript の encodeURIComponent() 関数を使用できます。

AJAX POST とプラス記号 ( + ) -- エンコード方法は?

于 2012-07-12T08:01:26.113 に答える
3

+URL デコード後にスペースとしてデコードされます。を渡したい場合は+、エンコードする必要があります。

于 2012-07-12T08:02:37.127 に答える
2

コントローラーに値を渡すと、リクエストの間にモデル バインダーが配置されます。ajax 呼び出しが行われると、URL とリクエストがエンコードされます。URL デコード形式の " " (スペース) 文字は、"+" にエンコードされます。
一方、Model Binder はリクエストをデコードし、パラメーターを抽出してコントローラーに渡すため、"+" は " " に変換されます。しかし、ここで問題は、なぜ「+」をセパレーターとして渡すのでしょうか??

于 2012-07-12T08:03:35.587 に答える