PHPとFlashのデータの受け渡しで質問です。


neko.swfからinu.phpというスクリプトをloadして
inu.php内の変数を読み込みたいのですが、undefinedが返って来てしまいます。
onLoadを使って調べた所、phpへのアクセス自体は成功しているようです。
また、inu.phpを単体で読み込むと「test=5」を画面に出力します。

---------------
inu.phpのソース

<?php echo("test=5"); ?>
---------------
neko.swfのAS

stop();

neko = new LoadVars();

neko.onLoad = function (ok) {
if(ok){
trace("読込み成功");
trace("test=" + neko.test);
gotoAndPlay(2);
}else{
trace("読込み失敗");
}
}

neko.load("inu.php");
---------------

初歩的な質問で申し訳ないのですが、
何が悪くてundefinedになってしまうのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/01/19 13:45:32
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:so-asano No.1

回答回数40ベストアンサー獲得回数5

ポイント60pt

LoadVars って、テキストファイルを読み込むんじゃなかったっけな。

問題は多分、php は html を出力していること。


# header("Content-type: text/plain");


とか入れてみたら動く、んじゃないと。

id:mizi

inu.phpにheader("Content-type: text/plain");を

追加してみましたがundefinedでした…うーん。

  • 追記

<?php echo("test=5"); ?>とせずにinu.phpの中身を

test=5のみにするときちんと変数を拾ってきます。

(半角だと表示されないためソースを一部全角にしています)

  • 解決

<?php echo("&test=5&"); ?>とすれば渡りました!

これでphpとflash間の変数の受け渡しは解決しました。

ご回答ありがとうございました!

2008/01/19 13:44:27
  • id:so-asano
    あー、また役に立たない回答をしてしまったっぽい(ポイントもらうのが恥ずかしい.... ポイント欲しさで回答してるわけでもないので)。

    ちっと調べて考えてみた感じだと、

    # header("Content-Type: text/plain; charset=UTF-8");

    として、

    # echo("test=5\n");

    とかなら動いたような気も。

    http://hima.chu.jp/flash/tips/shiftjis.htm
    http://hima.chu.jp/flash/tips/loadvars.htm

    # また、inu.phpを単体で読み込むと「test=5」を画面に出力します。

    とあるけど、データの受け渡しとかに php を利用する場合、画面出力はあまり意味がないんで、ソースを確認することが大事だと思う。php だと、標準のヘッダ出力が html なので。

    どうでもいい追記だけど、複雑なデータの受け渡しになると、xml を使うのが便利。actionscript では XPathAPI とか使って、php では pear の XML_Serializer とか使うと、実に簡単に実装できる。このときは、xml 出力前に、

    # header("Content-Type: text/xml; charset=utf-8");

    とかいれる、ってわけ。header は何かと便利なんで、頭に入れておくといいんではないかと。
    くだらんコメントをだらだらと書いて、失礼。
  • id:mizi
    詳しい追記ありがとうございます。
    いちいち&を書くのもめんどくさいですし、
    アドバイス頂いた方法を試してみた所、
    &の記述なしでもswfに変数が無事読み込まれました!

    今後はもうちょっといくつかのデータを
    swfに渡したいと考えていますので、
    xmlの展開方法も勉強していきたいと思います。
    どうもありがとうございました!
  • id:so-asano
    ちっとは役に立てたようで、良かった良かった。

    基本的に、単純なデータを渡すだけなら、別に、この方式でもいいと思う。ただ、構造化されたデータを渡したいとき、あるいは、データの個数が変化するとき、などは、やはり xml での受け渡しが便利。是非、こっちも挑戦してみてもらいたいところ。分からないことあったら、また質問してくれれば、と(ここのコメント欄でもいいんで)。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません