- ベストアンサー
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
- みんなの回答 (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 を定義して,後に実際にロードしています。
その他の回答 (1)
- suzuki-_-
- ベストアンサー率77% (152/195)
PHP側をちゃんと確認しましょう それのみではGETで送られてきたvalue1とvalue2を足したものが$sumという変数に代入されているだけです LoadVarsで読み込むには、例えばsumという変数に代入する場合 sum=hogehoge のようにその内容が"出力"されていなければいけません (現状だとブラウザでそのURLを開いても何も表示されないと思います) $sumの式の次行あたりに echo ('sum=' . $sum); を加えて出力するようにすればよいのではないでしょうか
補足
お早い回答ありがとうございます。 早速php側に echo ('sum=' . $sum); を付け加えてみたのですが、やっぱり上手くいきません。 print ('sum=' . $sum); も試しましたが だめです。 なにが問題なのでしょう。。 インターネットで情報を探してみたところ、どこかのサイトに IE6では onLoadが実行されないみたいなことが書いてあったのですが 事実なのでしょうか・・
お礼
なるほど! 文字列になっていたのですね!! 全く気がつきませんでした。 ””を消して 実行した所、無事 出力されました。 補足の説明も勉強になりました。 本当にありがとうございました。