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