我了解现有的问题和答案已经解决了这个问题。我已经查看了它们,但我的情况不允许我应用这些线程中提供的解决方案。
鉴于 JavaScript 是客户端而 PHP 是服务器端,以下是提供的两种解决方案:
限制:Facebook 页面选项卡应用程序
我无法使用上述通过 URL 传递参数的方法,因为 Facebook 页面选项卡已加载到 iFrame 中,它们无权访问查询字符串。app_data
Facebook 通过使用Facebook 对象中的 GET 参数signed_request
和 JSON 编码
提供了一种解决方法。
解决限制:使用 app_data GET 参数
我可以通过再次加载同一页面将参数传递到同一页面,但我仍然只处理 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 变量和值而被删除)
使用 JavaScriptencodeURIComponent()
和encodeURI()
(错误的方法,因为这些方法对整个 URL 进行编码并且传递的参数无法被 识别json_decode
)
目前正在尝试:带有 Ajax 的 JSON (XMLHttpRequest)
将 JSON 数据从 Javascript 发送到 PHP?
如何将数据从 Javascript 传递到 PHP,反之亦然?
我真正想要实现的目标:
PHP 变量在Facebook iFrame的同一页面中获取 JavaScript 值。页面重新加载以将参数传递给自身是可以的。
fer.php(错误示例)
function someValues(){
varA = 123;
varB = 456;
}
<?php
$cupA = varA;
$cupB = varB;
?>
我已经尝试解决这个问题好几天了,我什至试图通过在将数据附加到重定向 URL =x 之前json_decode
添加%
到我的数据来欺骗我真的很感激任何帮助或指导。谢谢!