ローカル共有オブジェクトを使用してユーザーを追跡することを目的としたプロジェクトに取り組んでいます。ユーザーは最初にページ A にアクセスします。このページには、ローカル共有オブジェクトを植える .swf が埋め込まれています。自分のフラッシュ Cookie をテストして、動作することを確認しました。
ページ B にアクセスすると、埋め込まれた別の .swf が Flash Cookie の取得を試み、Cookie が存在する場合は AJAX 関数を呼び出します。ページBは私が問題を抱えているものです。この Web ページには、AJAX 関数とともに .swf オブジェクトが埋め込まれています。次のコードは、ページ B の HTML です。これには、埋め込まれた .swf とともに AJAX スクリプトが含まれています。
<!DOCTYPE html>
<html lang="en">
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
function databaseAndemail(){
$.get('http://www.mywebsite.com/databaseAndemail.php');
}
</script>
</head>
<body>
<object width="1" height="1">
<param name="CheckLSO" value="http://www.mywebsite.com/CheckLSO.swf">
<embed src="http://www.mywebsite.com/CheckLSO.swf" width="1" height="1">
</embed>
</object>
</body>
問題は AJAX 関数にも PHP スクリプトにもありません。それが機能することがわかっているからです。問題は、LSO をチェックするための .swf スクリプト内にある可能性があります。これは、CheckLSO.swf という AS3 スクリプトです。
public function Main():void
{
//Check for a LSO
var myLocalData:SharedObject = SharedObject.getLocal("myData");
if (myLocalData.data.uname != null){ //LSO exists, so call AJAX function to update database and send email.
if (ExternalInterface.available){
ExternalInterface.call("databaseAndemail");
}
};
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
参考までに、ここに Cookie を設定する AS3 スクリプトを含めます (これもテストしましたが、動作します)。
public function Main():void
{
// Create a new SharedObject
var myLocalData:SharedObject = SharedObject.getLocal("myData");
// Save data to the SharedObject
myLocalData.data.uname = "ERE";
myLocalData.flush();
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
要約すると、何らかの理由で Javascript 関数が外部インターフェイスによって呼び出されていないと思います。Cookieが設定されていること、AJAXが機能していること、PHPスクリプトが機能していることを知っています(PHPを含めていません。この質問の範囲外のようです)。両方の .swf スクリプトがデバッグされます。Flex 4 で FlashDevelop を使用しています。これらは非常に単純なスクリプトなので、他に問題があるとは考えられません。何か案は??