【发布时间】:2012-06-17 06:17:08
【问题描述】:
我了解现有的问题和答案已经解决了这个问题。我已经查看了它们,但我的情况不允许我应用这些线程中提供的解决方案。
鉴于 JavaScript 是客户端而 PHP 是服务器端,以下是提供的两种解决方案:
限制:Facebook 页面标签应用程序
我无法使用上述通过 URL 传递参数的方法,因为 Facebook 页面选项卡加载到 iFrame 中,它们无权访问查询字符串。 Facebook 通过使用 Facebook signed_request 对象中的 app_data GET 参数和 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 Method(因为我仍然只处理 PHP 变量和值而被删除)
使用 JavaScript encodeURIComponent() 和 encodeURI()(错误的方法,因为这些方法对整个 URL 进行编码并且传递的参数无法被 json_decode 识别)
目前正在尝试: JSON 与 Ajax (XMLHttpRequest)
Send JSON data from Javascript to PHP?
How to pass data from Javascript to PHP and vice versa?
我真正想要实现的目标:
PHP 变量在 Facebook iFrame 的同一页面 中获取 JavaScript 值。页面重新加载给自己传参数就可以了。
fer.php(错误示例)
function someValues(){
varA = 123;
varB = 456;
}
<?php
$cupA = varA;
$cupB = varB;
?>
我已经尝试解决这个问题好几天了,我什至想通过在我的数据中添加% 来欺骗json_decode,然后将其附加到重定向 URL =x I非常感谢提供的任何帮助或指导。谢谢!
【问题讨论】:
-
所以,基本上,您是在尝试将数据从带有 HTML/JavaScript 的页面发送到 PHP 脚本?
-
是的,我正在尝试将数据发送回同一页面,以便将数据从客户端传递到服务器端。为了确保我没有弄错你的问题,HTML/JavaScript 和 PHP 在同一个文件中(fer.php)。
标签: php javascript facebook json facebook-iframe