PHP中的Flex输入和输出

时间:2009-05-21 13:21:01

标签: php flex

我想将flex中的输入值打印到PHP。

我的Flex代码...

<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收到关键字。任何人都可以在这里找到我无法得到的错误。

5 个答案:

答案 0 :(得分:1)

您是否尝试过使用FireBug?它是一个firefox扩展,可以准确显示Flex客户端和服务器之间连接的进出。

答案 1 :(得分: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方面,调试这样的应用程序的最佳方法是使用一些日志系统。

这是一个非常通用的日志记录功能:

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 );
}

http://localhost/search/index.php来电

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

答案 2 :(得分:0)

检查您的请求是否到达您的php脚本(即在脚本启动时记录一个字符串)。要查看脚本的内容:

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

抱歉,不能用flex :(。

答案 3 :(得分:0)

我首先编写一个接受输入并通过电子邮件发送或记录到文件的php脚本,以确保交易的发送一半有效;然后,一旦你确定它正在工作,继续验证是否返回了预期的结果。

答案 4 :(得分:0)

过去当我使用httpservice时,我没有设置方法参数(默认为'get')

所以我使用了像

这样的东西
<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>

然后在php里面我有

$ someVarThatsjustComeThrough = $ _REQUEST [“somethingToSend”];

如果您使用php回显任何内容,请以XML格式回复它。它将使你的工作在弹性方面更容易处理。

总是把时间放进去,它会阻止IE潜在地缓存php调用。