• ベストアンサー

onLoad が実行されない

変数1(value1)と変数2(value2)があり、それらを入力して ボタンを押すと、変数1+変数2の結果がPHP側で処理され、Flash側のtraceで出力される単純なプログラムを作ったのですが、どうもうまくいきません。 onLoadが実行されていないようなのです。 どこがいけないのかわかりません。 困っています。 誰か教えて頂けないでしょうか? 下記がソースです。よろしくお願いします。 //Flash側 on (release) { formData = new LoadVars () ; formData.value1 = value1 ; formData.value2 = value2 ; //受信用 receiveData = new LoadVars () ; formData.sendAndLoad("http://localhost/phptest.php", "receiveData", "GET") ; receiveData.onLoad = function(){ trace(receiveData.sum) ; } //PHP側 <?php $sum = $HTTP_GET_VARS['value1'] + $HTTP_GET_VARS['value2'] ; ?> 環境: windows XP , XAMPP, DREAMWEAVER8,FLASH8, IE6

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

PHP が全くわからない者ですし, データが見えないので全体が把握できませんが, LoadVars.sendAndLoad の第2引数 "receiveData" が 文字列なのはおかしいのではないでしょうか。 receiveData は LoadVars インスタンスであって,文字列ではありませんよね。 Flash 8 ヘルプより 「sendAndLoad (LoadVars.sendAndLoad メソッド)」 http://livedocs.macromedia.com/flash/8_jp/main/00002336.html --- 引用 --- > var send_lv:LoadVars = new LoadVars(); > send_lv.name = name_ti.text; > send_lv.sendAndLoad("http://www.flash-mx.com/mm/greeting.cfm", result_lv, "POST"); あと, PHP の反応が幾分か遅いと思いますし, 細かいことなので問題はないと思いますが(今回とは関係がないと思いますが), 先に LoadVars.onLoad = function() を定義して, その後に LoadVars.sendAndLoad を実行した方が無難だと思います。 もし(ありえませんが), 先に sendAndLoad を実行して即,ロードが完了し,同時に定義関数を呼び出されたとしたら, そのとき定義関数が定義されていない状態だと(読み込まれていなければ),空振りに終わります。 ですから,ヘルプでも先に LoadVars.onLoad を定義して,後に実際にロードしています。

tomokun621
質問者

お礼

なるほど! 文字列になっていたのですね!! 全く気がつきませんでした。 ””を消して 実行した所、無事 出力されました。 補足の説明も勉強になりました。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

PHP側をちゃんと確認しましょう それのみではGETで送られてきたvalue1とvalue2を足したものが$sumという変数に代入されているだけです LoadVarsで読み込むには、例えばsumという変数に代入する場合 sum=hogehoge のようにその内容が"出力"されていなければいけません (現状だとブラウザでそのURLを開いても何も表示されないと思います) $sumの式の次行あたりに echo ('sum=' . $sum); を加えて出力するようにすればよいのではないでしょうか

tomokun621
質問者

補足

お早い回答ありがとうございます。 早速php側に echo ('sum=' . $sum); を付け加えてみたのですが、やっぱり上手くいきません。 print ('sum=' . $sum); も試しましたが だめです。 なにが問題なのでしょう。。 インターネットで情報を探してみたところ、どこかのサイトに IE6では onLoadが実行されないみたいなことが書いてあったのですが 事実なのでしょうか・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 受け取った値が"undefined"と表示されてしまう。

    QNo.2601015で質問させて頂いた者なのですが、 もう一つ理解出来ない事がありましたので 再度質問させて頂きます。 変数1(value1)と変数2(value2)があり、それらを入力して ボタンを押すと、変数1+変数2の結果がPHP側で処理され、Flash側のtraceで出力される単純なプログラムを作成しています。 みなさんのお力で なんとかFlash側でデータを受け取るところまでは いけたのですが、受け取った値が”undefined”となってしまいます。 undefinedとは変数が未定義である時に表示されるのですよね? ソースのミスはないと思うのですが。。 下記がソースです。何度もすみませんが、よろしくお願いします。 //Flash側 on (release) { formData = new LoadVars () ; formData.value1 = value1 ; formData.value2 = value2 ; /受信用 receiveData = new LoadVars () ; receiveData.onLoad = function(){ trace(receiveData.sum) ; } formData.sendAndLoad("​http://localhost/phptest.php",​ receiveData, "GET") ; } //PHP側 <?php $sum = $HTTP_GET_VARS['value1'] + $HTTP_GET_VARS['value2'] ; echo ('sum=' . $sum); ?> 環境: windows XP , XAMPP, DREAMWEAVER8,FLASH8, IE6

  • sendAndLoadで

    多分稚拙な質問です。 phpとの連携でsendAndLoadを利用しようとしてます。 var temp_vars = new LoadVars(); temp_vars.code.text = "tekitou"; temp_vars.sendAndLoad("http://tekitou.jp/tekitou.php", temp_vars, "POST"); temp_vars.onLoad = function() { trace(this.hogehoge); } とするとphpからの返り値hogehogeが取れるのですが、下三行を temp_vars.onLoad = function() { _root.temp_hogehoge = this.hogehoge; } trace(_root.temp_hogehoge); とするとtraceがundefinedになります。単純にphpからの返り値をどこでも使えるグローバル変数に渡したいだけなんですが。 諸々試してはみたのですが、変数スコープの問題なのか、functionの使い方が間違っているのかさえ解らず悩んでいます。ご教授いただければと・・・

    • ベストアンサー
    • Flash
  • 外部テキストの値を得るには?

    フラッシュ初心者&質問するのが初めてなので うまく伝わるかどうか心配ですがよろしくお願いいたします。 外部テキストnum.txtにはstr=5という記述があります。 このnum.txtを取り込んで、 5という数値をflash側で変数aaaに代入しました。 --------------------------- var vars = new LoadVars(); vars.load("num.txt"); vars.onLoad = function(num){ if(num){ aaa= vars.str; trace(aaa); } } --------------------------- この場合、ちゃんと5と出力されます。 しかしこの関数内のaaaという変数を他でも利用したいのです。 (例えばvar menu_num:Number = aaa;というように) 単純に下のように記述すると --------------------------- var vars = new LoadVars(); vars.load("num.txt"); vars.onLoad = function(num){ if(num){ aaa= vars.str; } } var menu_num:Number = aaa; trace(menu_num); --------------------------- undefinedが出力されます。 この時にちゃんと5と出力させるにはどうしたらいいのでしょうか。 いろいろグローバル変数など勉強しましたがうまくいきません。 ちなみに外部テキストnum.txtのstr=5というのは、 5という数字のみでもかまいません。 とにかくテキストから数値を取り出す方法を考えています。 ご回答お願いいたします。

    • ベストアンサー
    • Flash
  • ActionScriptで分からないことがあります。

    http://hakuhin.hp.infoseek.co.jp/main/as/import.html#IMPORT_01 の、import_01_fla08_as1.lzhについて幾つか質問です。 1.以下の部分で、LoadVarsってどういうことをするものなのでしょうか? var vars = new LoadVars (); 2.vars.load(url);ってどういう動作をしているのでしょうか? // テキストファイルを読み込む関数 function LoadTextFunc(url){ // テキストファイルを読み込む vars.load(url); _root.SetMessage("読み込み要求:" + url); } 3.以下のstr = vars.str;はどういう動作をしているのでしょうか? vars.onLoad = function(check){ if(check){ SetMessage("読み込みが完了して変数にアクセスが可能"); str = vars.str; }else{ SetMessage("読み込み失敗"); } }

    • ベストアンサー
    • Flash
  • Flashからphpへ変数を持たせてリンク

    ActionScript初心者です、よろしくお願いします。 Flashのボタンを押し、リンク先phpのページへ 変数で情報を渡し、Mysqlからその情報を基にした内容を引っ張って 表示させるようにしたいと思っています。 同じような質問を参考に試しているのですが、うまくいきません。 下記の記述ではたりないのでしょうか? Flash側 仮にAというボタンのアクションに記述 -------------------------------------------------------------- on (press) { a=new LoadVars(); a.brand = HOGE; a.sendAndLoad("URL?brand="+this.a); } -------------------------------------------------------------- php側 <?php $brand=$_POST["brand"]; 割愛 $sql="select * from DA01 where brand=$brand"; 割愛 ?> とこんな感じです。 php側はFlashページでない別htmlからのリンクテストを行い問題なく 表示出来ました。 なのでFlash側の記述が問題だと思います。 どう直せばよろしいでしょうか? またこの記述では動かないとなれば、例としてどういう記述がよりベストかご教示願えればと思います、よろしくお願いします。 環境: MySQL4 PHP4~ WEBserver Apache FlashMX

    • ベストアンサー
    • Flash
  • actionscript2.0 とphp を用いてブラウザでswfファ

    actionscript2.0 とphp を用いてブラウザでswfファイルを表示しています。 actionscript側では、 以下のようにsendAndLoadメソッドを用いて var send1 = new LoadVars(); test1.page = 1; test1.sendAndLoad("test.php",test1); send1.onLoad = function() {  ロードした際の処理 } test.phpに値を送信しています。細かく言えば flash上のボタンが押された後にsendAndLoad し,1を送信しています。 それに対しphpでは、 <html> <head> </head> <frameset rows="55%,*"> <frame name='bottom1' src="test.php"> <?php // Action ScriptからのPOSTデータの取得 $page = $_POST['page']; print("<frameset cols='62%,*'>"); if ($page == 1){ print("<frame name='bottom2' src='test1.php'>"); }else{ print("<frame name='bottom2' src='test2.php'>"); } ?> </frameset> </frameset> </html> 上記のようにPhp側では$pageを受け取り、1であればフレームで指定されているファイルを test1.phpとします。$pageが空であればtest2.phpを下フレームに表示しています。 そしてメインとなるtest.phpではswfファイルを表示していて、そのFLASHのボタンをクリックして、test.phpにsendAndLoadしています。 動作なのですが、sendAndLoadして、testp.phpで値は取得しているのですが、 ページがロード(更新)されません。なので下フレームがtest1.phpからtest2.phpに 遷移しません。試しにsendのみしてみると、新しくブラウザが開き、そのページが更新されています。 新しくブラウザを開かないでframeによるページ更新をする方法はないのでしょうか? ご教授願います。 以下はsendのみの場合です。 var send1 = new LoadVars(); send1.page = 1; send1.send("***.php", "bottom", "POST");

    • ベストアンサー
    • Flash
  • HTMLのvalue値を取得したい。

    今、HTMLのフォーム内に <INPUT TYPE="image" name="point1" value="1" ALT="応募フォームへ" BORDER="0" HEIGHT="45" SRC="./img/img1.gif" WIDTH="127"><BR> <input type="hidden" name="point1" value="this.value"> という表示があります。 このvalue値を次の画面にいったときに取得したいのですが、うまくいきません。 PHP側で $req_data = $HTTP_POST_VARS; $req_data = array_merge($req_data, $HTTP_GET_VARS); print($req_data['point1']); とすると、表示されるのは this.valueです。。。 なにかよい方法はありませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • sendAndLoadで送信時に

    PHPとFLASHで連携しようと思っています。 PHPは違う人が作っているので書いてある事が分からないのですが 下記のスクリプトを使ってPHPに変数を渡そうとしています。 しかし実行するとPOSTで届かずにGETで届いてしまいます。 どなたか理由が分かる方いませんか? btn_mc.onRelease = function() { var result_xml:XML = new XML(); result_xml.ignoreWhite = true; var SendData = new LoadVars(); SendData.id = id.text; SendData.pass = pass.text; urlpass = url.text; trace([SendData.id, SendData.pass, urlpass]); SendData.sendAndLoad(urlpass,result_xml,"POST"); result_xml.onLoad = function(success) { if (success) { hyouji.text = result_xml; } else { trace("失敗!"); } }; }; stop(); 情報少なくてすいません。

    • ベストアンサー
    • Flash
  • FLASHからPHPへ値送信

    質問させて頂きます。 FLASHからPHPへ配列データを送信したいのですが、FLASHで作成した配列をPHPに送信する事は可能か教えてください。 ボタンを押した時にPHPに配列データを送信たいと思っています。 以下ソース ■FLASH側 on (release) { data[0]="りんご"; data[1]="みかん"; //送信用インスタンスの生成 transmit = new LoadVars(); //受信用インスタンスの生成 receipt = new LoadVars(); //受信処理 receipt.onLoad = function(Success) { } //phpに配列データを送信 transmit.recData = data; transmit.sendAndLoad("test.php", receipt, "POST"); } ■PHP側(test.php) <?php $aaa = $_POST{'data'}; ----------PHP処理------------ ?>

  • LoadVarsでPHPから変数を読み込む件について

    質問させていただきます。 PHPで、変数$usernameに入っている値をActionScriptに渡したいのですが、上手くいきません。 ■PHP側 echo "name=".$username; ■ActionScript側 var username: LoadVars = new LoadVars(); username.onData = function(src) {  if (src == undefined) {   trace("Error loading content.");  }  trace(src); }; username.load("./view.php"); trace(username.name); 試しに上記のような形で実行してみました。 onDataの中の「trace(src)」の出力によると、PHPを読み込んではいるのですが、echoの部分だけではなく、<?php ~ ?>のように、PHP全体を読み込んでしまっていることがわかりました。(しかも何故か1行ずつ行間を空けた状態で…) ちなみに一番最後の「trace(username.name)」は何も出力されませんでした。 Webで調べると、例えばPHP側で「echo "name=admin";」のように、直接値を表示しているものばかりのような気がしました。 私のような場合、欲しい部分だけをloadするにはどうすればよいでしょうか。どうぞご教示願います。