• 締切済み

受け取った値が"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

  • Flash
  • 回答数2
  • ありがとう数2

みんなの回答

noname#35109
noname#35109
回答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 になります。 つまりそれくらいシビアなのです。 また,見当はずれなことを書いているかもしれませんが, 気になったので,遅くなりましたが,回答させていただきました。

noname#35109
noname#35109
回答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);

tomokun621
質問者

補足

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

  • 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

    • ベストアンサー
    • 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
  • 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
  • Objectの1番目の値がundefinedに

    AS3にてPHPに値を渡して、処理した結果をFLASH側に戻す処理をしています。 今回はテスト用に、値は送らずに単純に結果を返すだけのPHPを作ったのですが、1番目の値がundefinedになってしまいます。 for inで取得すると正常にすべての値が取得できるのですが、直接参照するとダメです。2番目以降の値は取得できます。 このような現象について、お心当たりございましたら、是非お願い致します。 ●flash側 import ConnectPHP; //PHPとの受け渡しを行う外部AS var connectPHP = new ConnectPHP(); connectPHP.addEventListener(ConnectPHP.COMPLETE, completeHandler); connectPHP.sendAndLoad("check.php"); function completeHandler(e:Event):void { var obj:Object = connectPHP.result; for (var i in obj) { trace(i, '=>', obj[i]); } trace(obj.a); trace(obj.b); } ●PHP側 <?php echo "a=1&b=2"; ?> ●結果 a => 1 b => 2 undefined 2 ※for のtrace結果の時に、空の2行が書き出されます。

    • ベストアンサー
    • Flash
  • 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するにはどうすればよいでしょうか。どうぞご教示願います。

  • PHPでUndefined variableエラー

    PHPでUndefined variableエラーが発生します: <b>Notice</b>: Undefined variable: result in <b>/opt/lampp/htdocs/samples/chapter3/3-2/gen_defined_vars.php</b> on line <b>58</b><br /> どうやって直せばいいのか教えてください。 58行目がおかしいと出ていますが、$resultが未定義なので54行目のことだと思います。 ちなみに 9ー12行目は自分で直しました。お願いします。 1 <html> 2 <head> 3 <title>環境変数コード生成フォーム</title> 4 </head> 5 <body> 6 <?php 7 // 選択リストの値を取得 8 $name = "param"; 9 if ( isset($_POST[$name]) ) { 10 $selected_value = $_POST[$name]; 11 } 12 //$selected_value = isset($_POST[$name]) ? $_POST[$name] : ""; 13 14 // 定義済み変数を取得 15 $array = get_defined_vars(); 16 17 // 配列から選択リストを作成する関数 18 // パラメータ:配列/選択リスト名/選択値 19 function disp_list($array, $name, $selected_value = "") { 20 echo "<select name=\"" . $name . "\">"; 21 while (list($value, $text) = each($array)) { 22 echo "<option "; 23 if ($selected_value == $value) { 24 echo " selected "; 25 } 26 echo " value=\"".$value."\">" . $value . "</option>"; 27 } 28 echo "</select>"; 29 } 30 31 // 入力内容を処理する 32 $temp = "<?php echo \$_SERVER[\"%s\"] ?>"; 33 if (isset($_POST["param"])) { 34 $param = $_POST["param"]; 35 $result = sprintf($temp, $param); 36 } 37 else { 38 $param = ""; 39 } 40 41 ?> 42 <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> 43 <table cellpadding="10"> 44 <tr> 45 <td>環境変数を選択:<br /> 46 <?php echo disp_list($array["_SERVER"], $name, $selected_value); ?> 47 <input type="submit" value="作成" name="sub1"> 48 </td> 49 </tr> 50 <tr> 51 </tr> 52 <tr> 53 <td>作成されたコード:<br /> 54 <textarea name="ta1" rows="3" cols="40"><?php echo $result ?></textarea> 55 </td> 56 </tr> 57 </table> 58 </form> 59 </body> 60 </html>

    • ベストアンサー
    • PHP
  • 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処理------------ ?>

  • 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
  • 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
  • ActionScript3.0によるPHPへの変数の送信について

    はじめまして。 現在、FlashとPHPを用いたシステムを制作中なのですが、FlashからPHPへの変数の送信でつまづきました。 ネット上で調べてみてもAS3で解説しているサイトはほとんど見つからず、見つかっても自分の理解が悪いのかうまく行かない状況です。 状況としては下記のようなAS3とPHPを実行しています。 AS3から値をPOSTしてPHPで表示、それを読み取ってFlashでtraceしています。traceで1234は返ってきているのですが、PHP側ではcomp=しか表示されません。初歩的なミスだと思いますが、どこが悪いのかアドバイスいただければ幸いです。 よろしくお願いします。 環境 Flash CS3 Apache2.2 PHP5.2.6 ソース AS3 System.useCodePage = true; var request:URLRequest = new URLRequest ( "http://localhost/sample/FlashToPHP.php" ); //PHPへPOST送信 request.method = URLRequestMethod.POST; var variables:URLVariables = new URLVariables(); //送る変数 variables.num = "1234"; request.data = variables; var loader:URLLoader = new URLLoader (request); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, onComplete); loader.load(request); function onComplete (event:Event):void{ var vars:URLVariables = new URLVariables( event.target.data ); trace( vars.comp ); } PHP <?php //変数を受け取る $comment = $_POST['num']; $comp = $comment; echo "comp=".$comp; ?>

    • ベストアンサー
    • Flash

専門家に質問してみよう