2009-05-21 12 views
0

フレックスで入力値をPHPに出力したいと思います。PHPでのフレックス入力と出力

マイフレックスコード...

<mx:HTTPService id="sendReq" result="google(event)" showBusyCursor="true" method="POST" url="http://localhost/search/index.php" useProxy="false"> 
     <mx:request xmlns=""> 
      <keyword> 
       {keyword.text} 
      </keyword> 
     </mx:request> 
    </mx:HTTPService> 

    <mx:TextInput text="" id="keyword" left="130.5" top="89" right="228.5" height="40" fontSize="20" fontWeight="bold" borderStyle="outset" focusThickness="0"/> 

    <mx:Button click="sendReq.send();" id="search" label="search" right="133.5" top="91" height="40" width="75" alpha="1.0" fillAlphas="[1.0, 1.0]"/> 

私のPHPコード、

$keyword = $_POST['keyword']; 
echo $keyword; 

しかし、私は、Flexからキーワードを受け取ることができないのです。誰も私が得ることができないここにエラーを見つけることができます。

答えて

1

私はこの問題を解決するための時間を持っていないが、ここでのデバッグにいくつかのアドバイスです:

まず、私はあなたのHTTPRequestのために開始タグ内のすべてをトレースします。

<mx:HTTPService id    = "sendReq" 
       result   = "trace(event)" 
       fault   = "trace(event)" 
       showBusyCursor = "true" 
       method   = "POST" 
       url   = "http://localhost/search/index.php" 
       useProxy  = "false"> 

リクエストに何か問題がある場合は、あなたのリクエストにフォルトハンドラがありません。

PHP側では、このようなアプリケーションをデバッグする最善の方法は、いくつかのログシステムです。ここで

はかなり一般的なロギング機能である:http://localhost/search/index.phpコール

$message = ""; 
for($_REQUEST as $key => $val) 
{ 
    $message .= "$key = $val\n"; 
} 
log($message); 
+0

Majuscule reply mate、これは私の将来のコーディングでは非常に便利な時間を節約することができます。 – Kevin

1

FireBugを試しましたか?これはFirefoxの拡張機能で、Flexクライアントとサーバーの間の接続を正確に表示できます。

+0

優れたオン

define('PATH_TO_LOG_FOLDER', "../Logs"); public function log($message){ $logFileName = "log"; if(!$fp = @fopen(PATH_TO_LOG_FOLDER. DIRECTORY_SEPARATOR . $logFileName .date('Y-m-d').".log", 'a+')){ return FALSE; } flock( $fp, LOCK_EX ); fwrite($fp, $message); flock( $fp, LOCK_UN ); fclose($fp); } 

、おかげ – Kevin

+0

実は、それができない...それを完全に忘れてしまいました。Firebugはすばらしいですが、Flashで何が起こっているかで情報を取得しようとすると、あまり効果的ではありません。私はチャールズ(http://www.charlesproxy.com)にそれを勧めます(これは私がFlexのために作った最良の購入の1つです)。 – cwallenpoole

+0

@Christopher:フレックスアプリからサーバーまでのHTTPトラフィックをいつでもスニッフィングします。私がRESTの仕事をしているとき、それはロールスロイスのように機能します。 – Dan

0

リクエストがあなたのPHPスクリプトに到達したかどうかを確認します(つまり、スクリプトの開始時に文字列を記録します)。スクリプトに来るものを参照してくださいするには:。

print_r(getallheaders()); 
print_r($HTTP_RAW_POST_DATA); 
print_r($_POST); 

申し訳ありませんが、フレックス:(を助けることができない

0

を私は、ファイルへの入力や電子メールあなたのか、ログを受け入れるPHPスクリプトを書くことによって開始します、

0

これまで私がhttpserviceを使用していた時期に、私はあなたのトランザクションの半分を有効にしていることを確認しました。メソッドのパラメータを設定しないでください(デフォルトは 'get')

私が持っていると思いますPHPの内側その後

<mx:HTTPService id="myCall" 
    url="{'somephp.php'}" 
    result="resultHandler(event)" 
    fault="faultHandler(event)" 
    showBusyCursor="false" 
    resultFormat="e4x"> 
    <mx:request> 
     <somethingToSend>post data inside here</somethingToSend> 
     <time>{new Date().getTime()}</time> 
    </mx:request> 
</mx:HTTPService> 

のようなもの

$ someVarThatsjustComeThrough = $ _REQUEST [ "somethingToSend"];

phpを使用してエコーバックする場合は、それをXML形式でエコーバックします。それはあなたの仕事をフレックス側で扱いやすくするでしょう。

常に時間を置くと、潜在的にPHP呼び出しをキャッシュすることをIEが停止します。