![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
getURLを使用したときのGETの引数について。
いつもお世話になっています。
GET扱われ方について分からないことがあったので、教えてください。
インスタンス名【bot1】にgetURLを指定して飛ばすと、どうしてもIEで
見たときにうまく表示されませんでした。
bot1.onPress = function(){ getURL("../estate/e_list.html?category=11&public=2");}
それでgetURLの引数が足りないのかと思い
bot1.onPress = function(){ getURL("../estate/e_list.html?category=11&public=2","" ,"get");}
とした所、URLにbot1にマウスオーバー時に指定している関数名等が表示されて、これもうまくいきませんでした。
結局URLを変数に入れて、getURLに渡すとうまくいきました。
処理的にはうまくいったのですが、なぜgetURLに引数を指定したときに、予期しない値がURLに表示
されてしまったのでしょうか。
いくら調べても分かりませんでした。
お忙しい中大変申し訳ないのですが、
教えてください。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
getURL は、getURL が書かれているタイムライン、もしくは getURL を実行したムービークリップが持っている変数を”全て”送信する仕様になっています。
例えば、次のようなスクリプトをメインのタイムラインに書いた場合、
a = 1;
function Test()
{
trace( "Sample" );
}
bot1.onPress = function()
{
getURL( "○○○?category=11&public=2", "_blank" , "GET" );
};
↑ この getURL はメインのタイムラインに書かれていますから、送信しようとした category と public はもちろん、メインのタイムラインが持っている変数 a や関数 Test も送信されます。
ActionScript では、関数は” Function ”というクラスの変数のようなものです。そのため、これも変数と見なされて送信されてしまいます。
* * *
つまり、getURL はタイムラインが持っている変数を全て自動的に送信してくれるということですので、実は、URL の後に ? を付けなくても変数が送信されます。
これは簡単で便利ですが、何もしなくても全部送信してくれる簡便さゆえに、送る必要のないものやはたまた関数までもが勝手に送信されてしまうところが欠点です。
Flash Player 6 からは、本当に必要なものだけを選んで送信する専用のクラス” LoadVars ”が登場しました。
LoadVars の作例です。このスクリプトはフレームに記述してください。
(↓ 各行頭に全角のスペースが入っています。コピーする際はご注意ください)
//- - -
//オブジェクトを作成
send_obj = new LoadVars();
//送信するデータの用意
send_obj.category = "11";
send_obj.public = "2";
//ボタンを押した時に送信
bot1.onPress = function()
{
send_obj.send( "○○○" , "_blank" , "GET" );
};
//- - -
LoadVars は、荷札を付けた値を1つのカゴに入れ、そのカゴごとやり取りするようなものです。
荷札の名前は、受け取る側が要求する名前と一致していなければなりません。
上記の例ですと、カゴの名前が” send_obj ”、荷札の名前が” category ”と” public ”です。
このスクリプトの上に、先ほどの a = 1; などの変数や関数を追加して検証してみてください。
LoadVars に指定したものだけ送信され、余計な変数や関数は送信されなくなります。
LoadVars がなかった頃は、getURL がタイムラインにある全ての変数を送信する仕様を逆に利用して、送信を行うための専用のムービークリップを作り、それに送信したい変数を用意することで必要な変数だけを送信していました。
LoadVars はより分かりやすく送信するデータを用意できるので、Flash Player 6 以降ならばこちらの方がオススメです。
なお、LoadVars オブジェクトにも当然ながら持ち主がいて、参照するには持ち主を正確に指定しなければなりません。
他の階層から値を設定したり送信を行う場合は、ターゲットパスの誤りにご注意ください。
お礼が遅くなってしまい大変申し訳御座いませんでした。
丁寧に教えて頂き、ホントに有難うございます。
すごく分かりやすくて、もやもやがすっきりしました。
LoadVars クラスを使って書き直したところ上手く動いてくれまして。
お忙しいところ質問に答えて下さいまして、
本当に有難うございました^^
No.3
- 回答日時:
#1です
うお、これはすごい! 2つめの書式、
bot1.onPress = function(){ getURL("../estate/e_list.html","" ,"get");}
とやったら、本当に内部のプロパティやら関数やらが勝手にURLに付加されますね~
なんという仕様(笑
考えてみたらAS2のMovieClipって、変数も関数も全部プロパティなんだから、そう考えると自然?な動作なのかもしれません。
送信されても対向側で評価しなければいいわけですけど。。すごく気持ち悪い。
こちらが勉強になりました。thanks
aspnetさん
何度も投稿して下さいまして、本当にありがとうございます。
教えて頂くと納得なんですが、
それでもなんだか気持が悪いですね^^
お忙しい中、何度も投稿して頂き、有難うございました。
No.1
- 回答日時:
どうマズかったのかかかれてないので、はっきりとはわかりませんが、それはきっとリテラル文字列(定数)だったので、勝手にURLエンコ(エンコード)したんでしょう。
Flashはエンコードもデコードも自動でやるんで、ウザいといえばウザいです。
2番目にやられた書式でも、ターゲットとメソッドが別記されただけで基本的には同じです。
変数にいれて呼べばURLエンコードはかかりません。
外していたらごめんなさい。
参考URL:http://ja.wikipedia.org/wiki/URL%E3%82%A8%E3%83% …
aspnetさん
回答ありがとうございます。
スイマセン完全に自分の説明不足でした。
ボタンを押した時に、出力したいURLは出せたのですが、
その指定したURLの後にactionscript内で指定している
関数名がくっついてきてしまったので、どうしてかな??
という質問でした。
なぜ変数にURLを入れるだけで解決したのかも、分かりませんし、
自分の中で疑問が増えるばかりです。
昨日から、調べているのですが、全然分かりません。
どうか無知な私に教えてください、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- その他(パソコン・スマホ・電化製品) switch bot hub miniの接続ができません。 4 2022/11/16 15:41
- 英語 どのような場合に、予定や進行していない動詞を進行形にするかについて 2 2022/03/22 22:31
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームを再送信しますか?
-
お問い合わせフォームから送信...
-
Safariで「本当にこのフォーム...
-
フォームメールでの通し番号
-
Googleフォームを回答したか確...
-
VB6で、Bsmtp.dllを使って、メ...
-
メールアドレスが正しいかどう...
-
c# メールが送信できたか確認
-
アンケートフォーム送信後の送...
-
ソケットで通信するデータの帯...
-
ビジネスメールの敬称
-
初歩的な事だと思います。 Sub...
-
エクセルVBA テキストボックス...
-
DATE型変数を初期化する方法
-
テキストボックスの番号を使っ...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
c#でTextBoxの入力制限
-
EXCEL VBA で指定した範囲に入...
-
エディットボックスの入力制限...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
お問い合わせフォームから送信...
-
フォームを再送信しますか?
-
Safariで「本当にこのフォーム...
-
Googleフォームを回答したか確...
-
ACCESSから、メール送信を行い...
-
VB6で、Bsmtp.dllを使って、メ...
-
ソケットで通信するデータの帯...
-
ホームページビルダーのメール...
-
VBA EasyCommでの送信
-
Accessでメール一括送信ソフ...
-
c# メールが送信できたか確認
-
SendmailでHTML形式のメールを...
-
CGIでメールのReturn-Pathに値...
-
BASP21のSendMailとSendMailEx...
-
HP の問い合わせフォームのつく...
-
空メールを送信するフォームCGI
-
アンケート用紙での回答ができない
-
送信字数制限の無いフォームCGI...
-
sendmailでの複数メールアドレ...
-
safariの 「本当にもう一度フ...
おすすめ情報