4

eventName / ticketToWin / totalWinners の 3 つの異なるデータを渡す ajax リクエストを作成するスクリプトがあります。

eventName変数として「SCi + Tec」というケースが発生するまで、プロセス全体が完全に機能していました。送信直前のリクエストのデータは次のようになります。

name=Sci+Tec&ticketsToWin=1&totalWinners=2

しかし、PHP 側で _GET 配列をダンプすると、次のようになります。

array(4) {
  ["name"]=> string(7) "Sci Tec"
  ["ticketsToWin"]=> string(1) "1"
  ["totalWinners"]=> string(1) "2"
  ["_"]=> string(13) "1372359516001"

}

名前に「+」文字が欠落しているため、その後に続くすべてが壊れています。理由はわかりますか?

ありがとう!

4

4 に答える 4

3

文字列をエンコードします:

name=Sci%2BTech&ticketsToWin=1&totalWinners=2

または簡単:

var str = 'name=Sci+Tec&ticketsToWin=1&totalWinners=2';
var encoded = encodeURIComponent(str);

ドキュメントまたはこの質問を参照してください

于 2013-06-27T19:05:00.047 に答える
0

Google検索のように、スペースの代わりにプラス記号のURLが使用されていると確信しています。次のクエリを入力します。

"メールの送信方法",

URL には次のように表示されます。

「How+to+send+an+email」.

POSTしてみてください。

于 2013-06-27T19:03:55.947 に答える
0

URL では、クエリ文字列内のスペースは自動的にプラス記号に置き換えられます。そのため、サーバーが Sci+Tec を取得すると、そこにスペースがあると見なされます。URL エンコーディング %2B でエスケープする必要があります。

URL エンコーディングの詳細: http://www.w3schools.com/tags/ref_urlencode.asp

于 2013-06-27T19:05:01.997 に答える