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
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
すみません。
大分遅くなってしましました。
そして,
> formData と receiveData が逆では?
という寝ぼけたことを書いて申し訳ございませんでした。
=====================
今,ふと気づいたのですが。
> php側ではsum = 7 と出るのでphpの方も問題はないと思います。
ここの,「sum = 7」は手で入力されたものですか?
それとも,
実際に出力されたものをコピペで貼り付けたものですか?
なんでこんな変なことを聞くかというと,スペースが気になったのです。
「sum=7」←スペース無し
こうでないといけませんよ。
=====================
私は何も言ってないのに,自己解決され,
勝手に感謝されて,大変申し訳ない思いのご質問があるのです。
「PHPからデータをFlash(swf)に送りたいのですが」
http://oshiete1.goo.ne.jp/qa2628834.html
↑教えて!goo ↓OKWave (同じです)
http://okwave.jp/qa2628834.html
たった今,
「補足」と「お礼」があったことに気づいて,
返事ができなかったことに反省しながら「お礼」を読ませていただいていたのですが,
そのお礼にありますように,
> 下記のような記述をしました。
> echo '&name2=.$name2.'&';
これで解決されたそうです。
シングルクォーテーション(')が3つあるという,
私にとっては非常に理解しがたいプログラムなのですが,
これは, '文字列' という意味ではなくて 'エスケープ という意味なのでしょうかね...???
よくわかりませんが,
エスケープシーケンスの意味であれば,シングルクォーテーションが3つあるという意味がわかります。
「&」 と 「;」 をエスケープしているのでしょう。
本題はそれではなくて,
「name2=.$name2」
スペースが入っていませんよ。
このスペースの有無が実際の表示にどう影響するのかわかりませんが,
プレーンな外部テキストをFlashにロードさせるときは,
スペースも文字扱いになるので,
不要なスペースは入れてはならないのです。
例えば複数の変数と値を送信する場合,
こうしないとなりません↓。
name1=ABCD&name2=EFGH&name3=IJKL
スペースは一切無しです。
また,変数ごとに改行を入れたい場合は
こうなります↓。
name1=ABCD&
&name2=EFGH&
&name3=IJKL
なぜ,ABCD のあとに & があるかというと,
& を入れておかないと改行コードまで値扱いになるからです。
例えばこれ↓だと,
name1=ABCD
&name2=EFGH
こういう↓扱いになるのです。
name1=ABCD↓&name2=EFGH
name1 の値は ABCD ではなくて ABCD↓ (↓は改行コードの意味)になってしまいます。
これで誤作動を起こす場合があります。
例えばこうしておくと↓,
name1=ABCD&
&name2=EFGH&
こういう↓扱いになるのです。
name1=ABCD&↓&name2=EFGH&
改行コードはどちらにしてもデータ内に入ってしまいますが,
name1 の値は ABCD になります。
つまりそれくらいシビアなのです。
また,見当はずれなことを書いているかもしれませんが,
気になったので,遅くなりましたが,回答させていただきました。
No.1
- 回答日時:
なにしろ PHP はダメな者ですが,
(なぜダメかというと,わからない上に,検証する環境を持っていない....。)
formData と receiveData が逆では?
formData.sendAndLoad("http://localhost/phptest.php", receiveData, "GET") ;
↓ 変更? ↓
receiveData.sendAndLoad("http://localhost/phptest.php", frormData,"GET") ;
あと,
trace をたくさん入れてみて,
どこで undefined になるのか確かめてみられたら,
原因に近づけると思います↓。
//Flash側
on (release) {
trace("A:value1=" + value1 + ",value2=" + value2);
formData = new LoadVars () ;
formData.value1 = value1 ;
formData.value2 = value2 ;
trace("B:value1=" + formData.value1 + ",value2=" + formData.value2);
この回答への補足
sassakunさん 度々ありがとうございます。
早速、
receiveData.sendAndLoad("http://localhost/phptest.php", frormData,"GET") ;
の様に変更してみたのですが、だめでした。ボタンを押しても反応しませんでした。
またtraceを下記のように配置し、
value1=2,value2=5で実行してみた所↓
_____________________________________________________________
on (release) {
trace("A:value1=" + value1 + ",value2=" + value2);
formData = new LoadVars () ;
formData.value1 = value1 ;
formData.value2 = value2 ;
receiveData = new LoadVars () ;
receiveData.onLoad = function(){
trace(receiveData.sum) ;
trace("B:value1=" + formData.value1 + ",value2=" + formData.value2);
}
formData.sendAndLoad("http://localhost/phptest.php", receiveData , "GET") ;
trace("C:value1=" + formData.value1 + ",value2=" + formData.value2);
}
______________________________________________________________
A:value1=2,value2=5
C:value1=2,value2=5
undefined
B:value1=2,value2=5
と出力されたので 変数にはちゃんと値が渡っていると思います。
また↓の様にプログラムしてphp側のsumの値をみたところ
on (release) {
formData = new LoadVars () ;
formData.value1 = value1 ;
formData.value2 = value2 ;
formData.send("http://localhost/phptest.php", "_self", "GET");
}
php側ではsum = 7 と出るのでphpの方も問題はないと思います。
何がいけないのでしょう。。
うーん わかりません。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
VB.NETのテキストボック...
-
テキストボックスからフォーカ...
-
vba メモリーリーク
-
『μg』の読み方と意味。
-
コンピュータ言語paythonのエデ...
-
TextBoxにカーソルがあるかない...
-
VB.NET でのLaod/unLoad につ...
-
友達がたこ焼きを上に投げて口...
-
word
-
数式中の文字をCambria Math以...
-
illustratorとExcelは連携出来...
-
Excel VBAで改行を含む文字列を...
-
PowerPoint SmartArtの箇条書...
-
Illustratorテキストエリアへ塗...
-
googleサーチコンソールでの重...
-
画像からテキストデータを正確...
-
ASP.NET 動的コントロールのフ...
-
ユーザーがクリックするまでフ...
-
イラレでダブルクリックで文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
名古屋の栄と錦は治安悪い?
-
『μg』の読み方と意味。
-
NumericUpDownの数値を選択済み...
-
VB.NET でのLaod/unLoad につ...
-
テキストボックスからフォーカ...
-
VB.NETのテキストボック...
-
項目数は英語で
-
mailの送信音がしなくなったの...
-
シリアル通信について
-
vba メモリーリーク
-
CPUを2個搭載できるマザーボー...
-
フォームを開く時のイベント処理
-
TextBoxにカーソルがあるかない...
-
一部の文字のみ文字化けします
-
スマホが水に濡れてしまい、中...
-
C++の例外処理
-
PDFの余白、黄ばみ除去等の加工...
-
ob_start()した後、ob_flush()...
-
ヒント表示について
-
シリアルフラッシュメモリをな...
おすすめ情報