-1

ZendFrameworkを使用しています。type="text"「電話」と呼ばれる入力を含む、いくつかのフィールドを持つフォームがあります。送信するとき、私はAjaxを使用してデータをコントローラーに送信しています。さて、ここに私の問題があります。+たとえば、記号 を入力する+34-666666666と、受け取るデータはです34-666666666+記号が空白に変わります。この問題はでのみ発生し+ます。すべての記号で試しましたが、問題はありません。私は怒って、Googleで解決策を見つけられませんでした。

4

2 に答える 2

3

+記号は、空白を表すためにURLで使用されます。ajax送信はおそらくGETリクエストを実行して+おり、URL文字列内のは変換されています。を使用してajaxリクエストを送信する前に、JavaScriptを介して入力をサニタイズしますencodeURIComponent()

この質問も役立つかもしれません:Linuxボックスのスペースに変換されたURLのプラス文字

この質問では、次のことについて説明しencodeURIComponentます。JavascriptでURLをエンコードする方法は?

于 2012-06-14T08:40:41.633 に答える
3

ここで説明するように、GET/POSTデータをエンコードする必要があります。JavaScriptencodeURIComponent関数は少しひねりを加えて使用できます*:

application / x-www-form-urlencoded(POST)の場合、仕様に従って、スペースは「+」に置き換えられるため、encodeURIComponentの置き換えに続いて、「%20」を「+」に追加することをお勧めします。

"&phone=" + encodeURIComponent("+34-666666666").replace(/%20/, "+");      // "&phone=%2B34-666666666"
"&phone=" + encodeURIComponent("+34-666666666 x123").replace(/%20/, "+"); // "&phone=%2B34-666666666+x123"

*注:+URL内の文字の扱いは、パスコンポーネント内で使用されているかクエリ文字列内で使用されているかによって異なります。

  1. http://example.com/page+1- ファイル名page+1
  2. http://example.com/page%201- ファイル名page 1
  3. http://example.com/?file=page+1-クエリ文字列パラメータfile=page 1
  4. http://example.com/?file=page%201-クエリ文字列パラメータfile=page 1
于 2012-06-14T08:44:52.227 に答える