2

私が理解していることから、ハッシュ マーク (#) はサーバーに送信されないため、生の PHP を使用して以下の URL のようなデータを解析できる可能性は低いと思われます。

index.php?name=Ben&address=101 S 10th St Suite #301

この $_GET データをフォーム フィールドに事前入力しようとしています。Javascript (または jQuery) でこれを行うにはどうすればよいですか? また、Javascript を使用していない人のためにフォームを壊さないフォールバックはありますか? 現在、(通常はアドレス フィールドに) ハッシュがある場合、それ以降はすべて解析されず、$_GET に格納されません。

4

4 に答える 4

4

urlencode必要に応じて (php で) またはencodeURIComponent(JavaScript で)ハッシュをエンコードできます。

「ハッシュ」はリクエストの一部ではないため、スクリプトはそれを認識しません。

于 2010-06-01T23:21:51.447 に答える
2

webdestroya が言ったように、URL でリクエストを送信する必要があります

index.php?name=Ben&address=101%20S%2010th%20St%20Suite%20%23301

HTML フォームを使用している場合、フォームの送信時に文字列値が自動で URL コード化されます。

于 2010-06-01T23:35:36.353 に答える
1

ユーザーは電子メールのリンクをクリックし、電子メールに表示されたハッシュ マークを確認したいと考えます。

電子メールに貼り付けるに、ベンが引用した内容へのリンクをエンコードする必要があります。あなたが現在持っているものは、まったく URL ではありません。

+必要に応じて、クエリ パラメータのコンテキストの代わりにスペースをエンコードでき%20ますが、生のスペースを含めることは絶対にできません。これは、スペースを含まない URL の特徴を定義するためです。URL にスペースを入力すると、 Web ブラウザであれば、エラーは静かに修正されますが、電子メール クライアントは URL がスペースでいっぱいの場合、プレーン テキストから URL を抽出できません。

+の代わりに にスペースをエンコードする代替関数が時々あります%20。通常、これは+すべての状況で有効であるとは限らないため、避けるのが最善ですが、必要に応じて:

index.php?name=Ben&address=101+S+10th+St+Suite+%23301

urlencode次に、より標準的な の代わりにPHP の関数を使用しますrawurlencode

いずれにしても、ハッシュを にエンコードする必要%23があります。そうしないと、HTTP URL のハッシュはフラグメント識別子 (ブラウザーをスクロールするページの一部) を意味するためです。これは、ページ自体のアドレスの一部ではありません。ブラウザーからサーバーに渡されることさえないため、$_GETまたは他のインターフェイスから取得することはできません。

コンポーネントには、URL 文字列に挿入する前に % エンコードする必要があるアドレスなどの他の多くの文字があります。そうしないと、無効な URL または機能しない URL が残ります。そのすべての%23ビジネスが URL でおかしく見える場合... まあ、あなたはそれと一緒に暮らす必要があります. これは、常に URL がどのように見えるかです。

于 2010-06-01T23:55:59.660 に答える
0

私は通常、アンロード時にハッシュをCookieに保存します

ej:

window.unload = function(){

 if(document.location.hash) setCoockie('myhash',document.location.hash);

};
于 2010-06-02T03:58:38.167 に答える