1

jquery Ajax で # 記号を含む URL をリクエストすると、URL の # 以降の文字列が途切れてしまいます。例えば:

http://somesitem.com/?name=Some#thing

この URL が firebug で要求されているのを観察すると、送信されているのは次のすべてであることがわかります。

http://somesitem.com/?name=Some

encodeURI 関数を使用しようとしましたが、成功しませんでした。

# を含む文字列全体を送信する方法に関するヒントはありますか?

4

5 に答える 5

2

encodeURI は「#」を削除しません。encodeURIComponent を使用する必要があります

encodeURIComponent('Some#thing')

これにより、次のようなものが生成されます。

Some%23thing
于 2012-08-22T19:26:12.980 に答える
1

「#」を「%23」に置き換えてみてください。.

于 2012-08-22T19:27:01.297 に答える
0

#キャラクターに特別な意味があるからでしょう。基本的に予約文字です。用途に応じて別のキャラクターを使用することをお勧めします。

于 2012-08-22T19:25:10.160 に答える
0

フラグメント識別子がサーバーに渡されることはありません。サーバーに送信する場合は、最初に既存のフラグメントを標準の url パラメータに変換する必要があります。

var url = window.location;
//url = http://somesitem.com/?name=Some
url += '&hash='+window.location.hash;
//url = http://somesitem.com/?name=Some&hash=thing
$.get(url);

フラグメント識別子の機能は、URI の残りの部分とは異なります。つまり、その処理は、サーバーからの参加なしに、もっぱらクライアント側で行われます。もちろん、サーバーは通常、MIME タイプを決定するのに役立ち、MIME タイプはフラグメントの処理を決定します。エージェント (Web ブラウザーなど) が Web サーバーからリソースを要求すると、エージェントは URI をサーバーに送信しますが、フラグメントは送信しません。代わりに、エージェントはサーバーがリソースを送信するのを待ってから、ドキュメント タイプとフラグメント値に従ってリソースを処理します。

http://en.wikipedia.org/wiki/Fragment_identifier

于 2012-08-22T19:27:06.283 に答える
0

http://api.jquery.com/category/selectors/

JQuery ドキュメントの特殊文字には # が含まれます

JQueryでエスケープするには2つの\を使用すると書かれています(JavaScriptでは1回だけだと思います)。

于 2012-08-22T19:28:58.753 に答える