[解決済み] AJAX POSTとプラス記号( + ) -- エンコードするには?
質問
フォームフィールドの内容をAJAX経由でPHPスクリプトにPOSTし、JavaScriptを使って
escape(field_contents)
. 問題は、プラス記号が除去され、スペースに置き換えられてしまうことです。 どうすれば安全にプラス記号を「エンコード」し、PHP側で適切に「デコード」できるのでしょうか?
どのように解決するのですか?
使用方法
encodeURIComponent()
を使用すると、JSとPHPで正しい値を受信できるはずです。
注意: あなたが
$_GET
,
$_POST
または
$_REQUEST
である場合、すでにデコードされている値を取得することになります。
例
あなたのJSで
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B
サーバーで
echo $_GET['string']; // "+"
url エンコードされたデータを含むのは、生の HTTP リクエストのみです。
GET リクエストの場合、これは
URI. $_SERVER['REQUEST_URI']
または
$_SERVER['QUERY_STRING']
. urlencodeされたPOSTの場合。
file_get_contents('php://stdin')
NBです。
decode()
は1バイトのエンコードされた文字に対してのみ機能します。UTF-8の全領域に対しては動作しません。
例えば
text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100
// correct
encodeURIComponent(text); // "%C4%80"
注
"%C4%80"
とは同等です。
escape('\xc4\x80')
どちらがバイト列(
\xc4\x80
)を表すバイト列はどれか。
Ā
をUTF-8で表現します。ですから、もしあなたが
encodeURIComponent()
を使用する場合は、サーバー側で UTF-8 を受信していることを認識する必要があります。そうでなければ、PHP はエンコーディングを歪めてしまいます。
関連
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] HTTP POST Web リクエストの作成方法
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] 入力フィールドから属性を読み込むと、HTMLエンコーディングが失われる
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】JavaScriptの関数式の前にプラス記号がある場合
-
[解決済み】PHPによるjQuery Ajax POSTの例
-
[解決済み] イテレータでmap()を使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法