sendAndLoadでPHPとFLASHが連携できない理由について

このQ&Aのポイント
  • PHPとFLASHで連携するためにsendAndLoadを使用していますが、POSTでデータが届かずGETで届いてしまいます。
  • 実行したスクリプトでは、sendAndLoadを使用してデータを送信していますが、なぜGETで届くのか理由が分かりません。
  • sendAndLoadでデータがPOSTで届かない場合、原因を特定するために、スクリプトや設定を確認する必要があります。
回答を見る
  • ベストアンサー

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(); 情報少なくてすいません。

  • jsqrm
  • お礼率45% (16/35)
  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

「ムービープレビュー」で動作を確認していませんでしょうか? 「ムービープレビュー」では、POST を指定しても GET で送信されてしまいます。 LoadVars.send メソッドのヘルプですが、  ・Flash CS3 ドキュメンテーション: LoadVars.send   http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001789.html ↑この中ほどに、  > Flash のテスト環境では、常に GET メソッドを使用します。POST メソッドを使ってテストする場合は、ブラウザ内で使用してください。 という説明があります。 CGI や JavaScript などと連携する作品は、スクリプトに誤りがなくても「ムービープレビュー」では正常に動かないことがあります。面倒でも swf ファイルを表示する HTML ファイルを作成し、ブラウザで動作を確認してみてください。 通信回線を介して外部と通信する作品の場合はオフラインになっているせいで上手くいかないこともあるので、オンライン環境で確認すると万全だと思います。 

jsqrm
質問者

お礼

回答ありがとうございます。 HTML内でやってみたのですが、やはりうまくいきませんでした。

関連するQ&A

  • PHPからFlashにXMLをそのまま渡す方法

    こんにちは PHPでXMLファイルを読み込み、それをそのままFlashに渡しFlash側でXMLをパーサしようと、このように書きました ------------------------------------------------------- (PHP) <?php $url = 'test.xml'; $h = fopen($url, "r"); $result_xml= ''; while(!feof($h)) { $result_xml.= fread($h, 4096); } fclose($h); echo "&data=$result_xml&"; ?> ------------------------------------------------------- (Flash) var xml:XML = new XML(); xml.load("work.php"); xml.onLoad = function(success:Boolean):Void { if (success) { trace(this.data); } }; ------------------------------------------------------- するとtraceの結果はundefinedでした。 PHPの出力結果が文字列型だということが原因のような気がするのですが、PHP側から文字列で出力するのではなく、XMLで出力するにはどうしたらよいでしょうか? リファレンスを探してみたのですが、なかなかそういった関数が見つかりませんでした。 よろしくお願いします。

  • phpからxmlへの文字化け

    PHPについての質問です。PHPのバージョンは5です。 FLASH8で作ったスクリプトからPHPに変数を送り、その変数をPHPからXMLに送っています。 しかしPHPからXMLに送ると日本語がちゃんと表示されません。何かPHPの方でしないとまずいのですか? <FLASH> System.useCodepage = true; SendData = new LoadVars(); //送りたいデータを箱に詰める this.btn_mc.onRelease = function() { _root.SendData.pro1 = nam; _root.SendData.pro2 = sbj; _root.SendData.pro3 = mail; _root.SendData.pro4 = product; //データ(中身)を詰めた箱をgetFlash.phpに送信 _root.SendData.sendAndLoad("http://localhost/php/xml_php/xml12.php", _root.SendData); }; <PHP> <?php /*変数を入れる*/ $name = $_POST["pro1"]; $sbj = $_POST["pro2"]; $add = $_POST["pro3"]; $msg = $_POST["pro4"]; /*時間を取得する*/ $stamp = time(); $date = date('Y,m/d(D)', $stamp); /*xmlに追加*/ $xml_path = "test1.xml"; $xml = file_get_contents( $xml_path ); $replace_key = "<article>"; $add_xml = $replace_key."\n<entry name='$name' dat='$date' tit='$sbj' contents='$msg'/>\n"; $result = str_replace($replace_key,$add_xml,$xml); file_put_contents( $xml_path , $result ); ?> <xml> <?xml version="1.0" encoding="utf-8"?> <article> <entry name="ha" dat="2008,03/10(Mon)" tit="test" contents="hogehoge"/> </article> となっています。

    • 締切済み
    • PHP
  • ムービー上で入力した値の送信がうまくいきません。

    FLASH CS6 にてムビーを作成しております。 AS2.0から3.0に移行してちんぷんかんぷんになっております。 題名の通りムービー上でIDとパスワードを入力して送信ボタンを押すとPHPにデータが渡って 返ってくるということがしたいのですが 以下のようにしたのですがうまくいきません。 dataObj.search_id = MovieClip(root).search_id; dataObj.search_pass = MovieClip(root).search_pass; 以下のように予め入力しておくとうまく動作します。 dataObj.search_id = 123; dataObj.search_pass = 456; 単純な代入ミスかタイミングの問題だと思うのですがどうやっても動きません。 お手数ですが3.0初心者ですので宜しくお願いします。 ===以下スクリプトです。=== php_btn.addEventListener(MouseEvent.CLICK, execPHP); //クリックでCGIを実行する function execPHP(eventObj:MouseEvent):void { //送信するデータオブジェクト var dataObj:URLVariables = new URLVariables(); //以下のようにムービー上のsearch_idとsearch_passに入力された値を送信したい。 dataObj.search_id = MovieClip(root).search_id; dataObj.search_pass = MovieClip(root).search_pass; //リクエストの作成 var urlReq:URLRequest=new URLRequest(); urlReq.url="http://hoge.com/hoge.php"; urlReq.method=URLRequestMethod.POST; urlReq.data=dataObj; //URLLoaderの作成 var cgiLoader:URLLoader=new URLLoader(); //送受信するデータフォーマットを指定する cgiLoader.dataFormat=URLLoaderDataFormat.VARIABLES; cgiLoader.addEventListener(Event.COMPLETE, onCGIComplete); try { //PHPを実行する cgiLoader.load(urlReq); } catch (e:Error) { // エラー処理 } } //PHPの実行結果を受け取る function onCGIComplete(eventObj:Event):void { var loader:URLLoader=eventObj.target as URLLoader; //受信したデータオブジェクト var dataObj:URLVariables=new URLVariables(loader.data); //受信したデータの確認 var result:String=dataObj.res1; result_fld.text=result; }

    • ベストアンサー
    • 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
  • flashでPHPファイル(実際は該当するxmlを呼ぶ)を読み込む方法について

    FLASH(AS2.0)でPHPファイル(実際は該当するxmlを呼ぶ)を読み込むようにするにはどのようにしたらいいのですか? 現状では、ローカルのxmlファイルを読み込むように、 下記のように書いてあります。 var objXML:XML = new XML(); objXML.ignoreWhite = true; objXML.onLoad = function(success:Boolean):Void { if(success) { loadXML(this); } } var menuArray:Array = new Array(); // function loadXML(objXML:XML):Void { var dataNode:XMLNode = objXML.firstChild; var menuNodes:Array = dataNode.childNodes; for(var i:Number = 1; i <= menuNodes.length; i++) { var menuNode:XMLNode = menuNodes[i-1].childNodes; var Name:String = menuNode[0].firstChild.nodeValue; menuArray[i] = { title:Name}; } myVars(menuArray); } objXML.load("sample.xml"); この状態から、外部<http://aaaa/sample.php>URLに アクセスして、PHPファイルを読み込むにはどのようにしたら よいのか全くわかりません。 objXML.load("sample.xml"); 上記の()の中に直接URLを挿入すると、 ローカルでは確認できるのですが、 ファイルをアップすると、まったく読み込めてはいません。 ActionScriptは全くわからないので、ご教授よろしくお願いいたします。

  • as3 変数のスコープについて

    xmlの読み込みをしていますが、 最後のtraceで内容が表示されません。nullになります。 var myXML:XML; var imgSrc:String ; var url:URLRequest = new URLRequest("test.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.dataFormat = URLLoaderDataFormat.TEXT; xmlLoader.load(url); xmlLoader.addEventListener(Event.COMPLETE, comp); function comp(event:Event):void { myXML = XML(xmlLoader.data); imgSrc = myXML.img[0]; } trace(imgSrc);←ここがnullです。 function内でtraceすると問題なく表示されるのですが、 一体どうしてでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • FLASH⇒PHP間のXML受け渡し

    FLASH & PHP初心者です。 環境: FLASH8 PHP5.2.3 FLASHからsendAndLoadを使ってXMLを送信した場合、サーバ側PHPでは$_POST[];でデータ取得できるのかなと思って調べています。 例:xml_Request.sendAndLoad("http://localhost/xmlresponder.php", xml_Response); このとき、$_POST[]の中には何を記述したらよいのでしょうか。 それとも他の取得方法があるのでしょうか。 同様の質問がQNo.2916528に上がっていたのでecho $_POST[text/xml];で動かしてみたのですが<br />が返って来ただけでした。 ご教授宜しくお願いします。

    • ベストアンサー
    • PHP
  • jqueryの$.ajaxで送信できない

    はじめまして。 jquery初心者ですが、$.ajax使ってのPOST送信ができません、php側でログを取ってみてもアクセスすらしません。若干お手上げなので、分かる方がいたら、アドバイスを頂けませんか? 【やりたいこと】 formにデータを入力(html)し → jqueryを使ってpost送信(js) → 認証(php) → 結果をhtmlに表示させたい。 【ソース】 -a.html- <form method="post" id="signin" action=""> <input id="email" name="email" value="" title="email" class="required" tabindex="4" type="text"> <input id="posturl" type="hidden" name="posturl" value="a.php"> <input id="signin_submit" value="Sign in" tabindex="6" type="submit"> </form> -------- -a.js- $(function() { $("form#signin").submit(function() { var email = $("input#email").val(); var postFile = $("input#posturl").val(); var data = {email:email}; $.ajax({ type: "POST", url: postFile, data: data, timeout: 1000, error: function(){ // エラー時 alert('Error'); }, success: function(data) { if(data != ''){ alert(data.result); } else { alert('no data'); } } }); }); }); -------- -a.php- (他略、とりあえず適当に出力してみる) echo "{'status': false,}"; exit; -------- よろしくお願いします。m_m

  • 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
  • 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処理------------ ?>

専門家に質問してみよう