現在Ajaxを利用した簡単なノートパットを作成しています。保存の際にAjaxの機能を利用し、リアルタイムで保存できるようにしたのですが、サーバーとのやり取りが分けありでGETメソッドです。


そうなってくると、途中で & が含まれてしまうと&以降のデータ送信がうまくいきません。

そこで質問です。はてなのブックマークエントリでは&を含んだURLでもしっかりと取得できるようになっています。これはどのようにしてやっているのしょうか?言語はPHPにて方法を教えてください。

*%26をつかうは無しで。

回答の条件
  • 1人5回まで
  • 登録:2007/03/10 11:13:43
  • 終了:2007/03/12 10:24:46

ベストアンサー

id:chris4403 No.3

くりす回答回数223ベストアンサー獲得回数282007/03/10 15:01:35

ポイント50pt

PHPのサーバサイドでリクエストのURIを取得する方法があります。

$requestUrI = $_SERVER["REQUEST_URI"];

ここで取得した$requestUrlから正規表現で取得したらどうでしょうか?

※ただ、GETでの送信には確か文字列長の制限があったと思うので、ノートパッドのような長文の送信が発生する可能性があるアプリの用途としてはあまり向いていない気がします。

id:esecua

なるほど。その手がありましたか。検討してみます。

2007/03/10 15:30:10

その他の回答(2件)

id:jp_ben No.1

jp_ben回答回数6ベストアンサー獲得回数02007/03/10 13:12:45

ポイント15pt

%26をつかうは無しで。とありますが、

あえて、URLエンコードして対処することを提案します。

というよりも、そうしないと日本語などは正常に処理できないことがあるのではないだろうか?

と危惧します。

ブラウザ依存のURLエンコードが不安であればJavaScriptでブラウザに依存しないURLエンコードの方法もあります。

http://user1.matsumoto.ne.jp/~goma/js/utf.html

ご存知だとはおもいますが、GETメソッドの文字数制限にはご注意ください。

ノートパッドということなのでおそらく文字数を制限するか、複数回に分けた送信を行うかすることになるのだろうと思います。

id:esecua

でも、はてなのエントリはエンコードしていません。この方法を知りたいのです。

2007/03/10 13:46:56
id:jp_ben No.2

jp_ben回答回数6ベストアンサー獲得回数02007/03/10 14:24:36

ポイント15pt

はてなのエントリというのがどのことかよく分かっていませんが、もしこの送信フォームのことでしたら、ポストで送られているように見受けられます。

GETデータ受信した段階では&で分かれたりしていません。

その後サーバー側のプログラムで分割する処理があるはずです。

それを止めるだけで実現可能だとおもいます。

もし、perlを利用されているのであれば

http://jsgt.org/ajax/ref/test/json/getpost/test3.htm

この辺を参考にされてはいかがでしょうか。


また、URLエンコードを利用しないということはそれ以外送信パラメーターが複数あった場合それを処理するための決まりごとを自身で作成しなければいけないことになりかねません。

(URLエンコードされているために、&や=が処理記号だと判断できる)

特に、ノートパッドということでどんな文字が入力されるか予測が付きにくい状況ではデータを複数種類送ることは困難を極めるのではないかと思います。

URLエンコードの処理は、

クライアント側が、フォームのGETでデータを送るなら、プログラムゼロ行、JavaScriptで送る場合プログラム1行

サーバー側が3行程度のプログラムになると思いますが、

それを回避することで、対処しなければいけなくなる処理は比べ物にならないほど大きなものになると思います。

id:esecua

エントリとは http://b.hatena.ne.jp/entry/http://www.hereticanthem.com/webtool... です。 entry/の後にブックマークされたURLが入力されているのですが、このURLに&が含まれていても最後まで正しく読み込まれます。

ですのでエンコードせずに送信したいのです。今回はJavascriptの質問ではなくサーバーサイドの技術に関する質問と思ってください。

2007/03/10 14:30:21
id:chris4403 No.3

くりす回答回数223ベストアンサー獲得回数282007/03/10 15:01:35ここでベストアンサー

ポイント50pt

PHPのサーバサイドでリクエストのURIを取得する方法があります。

$requestUrI = $_SERVER["REQUEST_URI"];

ここで取得した$requestUrlから正規表現で取得したらどうでしょうか?

※ただ、GETでの送信には確か文字列長の制限があったと思うので、ノートパッドのような長文の送信が発生する可能性があるアプリの用途としてはあまり向いていない気がします。

id:esecua

なるほど。その手がありましたか。検討してみます。

2007/03/10 15:30:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません