この問題にすでに対処している既存の質問と回答があることを理解しています。私はそれらを調べましたが、私の状況では、これらのスレッドで提供されているソリューションを適用することはできません。
JavaScriptがクライアント側であり、PHPがサーバー側であるとすると、提供される2つのソリューションは次のとおりです。
制限:Facebookページタブアプリケーション
FacebookページタブはiFrameに読み込まれ、クエリ文字列にアクセスできないため、上記の方法でURLを介してパラメーターを渡すことはできません。Facebookは、app_data
FacebookオブジェクトのGETパラメーターsigned_request
をJSONエンコーディングと一緒に使用することで回避策を提供します。
制限の解決:app_dataGETパラメーターの使用
同じページを再度ロードすることで同じページにパラメーターを渡すことができますが、それでもPHPの変数と値のみを扱っています。
fer.php
<?php
$appData = array();
if (!empty($signedRequest) && !empty($signedRequest['app_data'])) {
$appData = json_decode($signedRequest['app_data'], true);
}
echo '<pre>' . print_r($appData) .'</pre>';
//prints Array ( [lat] => 123 [lon] => 456 ) when fer.php reloads
$params = array(
'lat' => '123',
'lon' => '456'
);
$encodedParams = urlencode(json_encode($params));
$tabUrl = 'http://www.facebook.com/pages/FACEBOOK_PAGE/367117263337064?sk=app_433576149993619';
//$tabUrl will open fer.php
$linkUrl = $tabUrl . '&app_data=' . $encodedParams;
?>
...
function loopPage()
{
top.location = "<?= $linkUrl ?>";
//reloads fer.php
}
参照: http: //labs.thesedays.com/blog/2011/06/23/query-strings-for-facebook-page-tabs/
また試した:
Cookieメソッド(まだPHP変数と値のみを扱っているため削除されました)
JavaScriptを使用encodeURIComponent()
してencodeURI()
(これらのメソッドはURL全体をエンコードし、渡されたパラメーターはによって認識されないため、間違ったアプローチjson_decode
)
現在試行中: Ajaxを使用したJSON(XMLHttpRequest)
JSONデータをJavascriptからPHPに送信しますか?
JavascriptからPHPに、またはその逆にデータを渡す方法は?
私が本当に達成しようとしていること:
FacebookiFrameの同じページでJavaScript値を取得するPHP変数。ページをリロードしてパラメータを自分自身に渡すことは問題ありません。
fer.php(間違った例)
function someValues(){
varA = 123;
varB = 456;
}
<?php
$cupA = varA;
$cupB = varB;
?>
私はこの問題を何日も解決しようとしてきましたが、リダイレクトURL = xに追加する前にデータを追加することで、だまそうとすることさえありjson_decode
ます%
。助けや指示があれば本当に感謝しています。ありがとう!