0

フレックスアプリからPHPスクリプトにデータを投稿して保存しようとしています。

簡単なテストとして、私はphpスクリプトを次のように作成しました

<?php
if ($_POST) {

    $message = "Text:" . $_POST['Text'];

    mail('vince@myemailaddress.com', 'POSTED!', $message);

} else {
    mail('vince@myemailaddress.com', 'No Post Test', 'Testing..');
}

?>

ブラウザでスクリプトを実行すると、問題のない電子メールが届きます。しかし、フレックス関数を呼び出しても何も得られませんか? 私はそれを間違っていますか?

private function onTextMessageRecv(event:AsyncDataEvent):void
{
  var dialogID:String = event.data;
  var strFrom:String = event.data2;
  var strTime:String = event.data3;
  var MessageStr:String = event.data4;

  var variables:URLVariables = new URLVariables()
  variables.From = strFrom;
  variables.To = m_strUserDisplayName;
  variables.Text = MessageStr;
  saveIMdata( variables);

}

private function saveIMdata( variables:URLVariables):void 
{
    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Saving IM...");
    var myData:URLRequest = new URLRequest("http://im.vlowe.co.uk/save.php")
    myData.method = URLRequestMethod.POST
    myData.data = variables
    var loader:URLLoader = new URLLoader()
    loader.dataFormat = URLLoaderDataFormat.VARIABLES
    loader.load(myData)
}

「Saving IM...」のログ エントリは表示されますが、メールはありませんか?

助けてくれてありがとう。

更新: これを試しました..しかし、どちらのイベントも発生していないようですか?

private function saveIMdata( variables:URLVariables):void 
{
    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Saving IM...");
    var myData:URLRequest = new URLRequest("http://im.vlowe.co.uk/save.php");
    myData.method = URLRequestMethod.POST;
    myData.data = variables;
    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, variables.Text);
    var loader:URLLoader = new URLLoader();

    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Loaded?...");
    loader.addEventListener(Event.COMPLETE, onLoadComplete);
    loader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);

    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.load(myData);
}

private function onLoadComplete(e:Event):void
{
    var loader:URLLoader = URLLoader(e.target);
    trace(loader.data);
    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Load completed");
    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, loader.data.toString());
}

private function onLoadError(e:IOErrorEvent):void
{
    trace(e.text);
    LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Error " + e.text);
}

更新 2: 私の crossdomain.xml

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*" to-ports="80,843,8080,8081,8082" secure="false"/>
</cross-domain-policy>
4

2 に答える 2

2

クロスドメインのセキュリティ問題のように私には聞こえます。

    loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
    private function securityErrorHandler(event:SecurityErrorEvent):void {
       trace("securityErrorHandler: " + event);
    }

[編集]

これは存在しませんhttp://im.vlowe.co.uk/crossdomain.xml

crossdomain.xmlは次のようになります。Doctypeを削除します

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
    <allow-access-from domain="*.someDomain.com"/>
</cross-domain-policy>
于 2013-03-01T19:40:27.250 に答える
0

URLLoader にエラー ハンドラと完全なハンドラを追加し、php ファイルがロードされているかどうかをテストします。

loader.addEventListener(Event.COMPLETE, onLoadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);

private function onLoadComplete(e:Event):void
{
    var loader:URLLoader = URLLoader(e.target);
    trace(loader.data);
}

private function onLoadError(e:IOErrorEvent):void
{
    trace(e.text);
}

PHP ファイルで何かをエコーすると、onLoadComplete 関数でそれが表示されるはずです。

于 2013-02-28T18:33:29.413 に答える