我知道已经有一些问题和答案解决了这个问题。我已经看过了,但我的情况不允许我应用这些线程中提供的解决方案。
考虑到JavaScript是客户端,PHP是服务器端,以下是提供的两种解决方案:
GET/POST方法(POST#3(
AJAX方法
限制: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方法(已删除,因为我仍然只处理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
,我真的很感激任何帮助或指导。谢谢
目前还不清楚您是否想要:
-
将您在PHP中通过
app_data
接收的数据传递给JavaScript或 -
将数据从JavaScript传递到PHP。
将数据从PHP传递到JavaScript
<head>
<script type="text/javascript">
var app_data = <?php echo json_encode($appData); ?>;
</script>
</head>
<body>
...
将数据从JavaScript传递到PHP
$.ajax({
url: location.pathname, // current page
type: 'POST',
data: {
vara: 'hello',
varb: 'world'
},
success: function() {
// ...
}
});
例如,您可以使用javascript轻松地做到这一点HTML代码:
<select id = "Select" onchange = "FijarPrecio (this.id);" >
<option value = "10"> product 1 </ option>
<option value = "20"> product 2 </ option>
<option value = "30"> product 3 </ option>
</select>
<input type = "text" name = "Price" id = "Price"/>
<script type = "text/javascript" >
FijarPrecio function (id) {
PrecioSel var = document.getElementById (id);
PrecioActual var = document.getElementById ('Price');
PrecioActual.value = PrecioSel.value;
}
</script>
我真正想要实现的目标:
在Facebook iFrame的同一页面中获取JavaScript值的PHP变量。页面可以重新加载以将参数传递给自己。
最简单的方法:生成一个表单元素,用一些(隐藏的(输入字段填充它,然后将它POST到服务器。
AJAX也是可能的,也许对用户来说更好,因为它不需要重新加载。
由于您没有详细描述任何问题,我只能假设这主要是由于您在这些问题上普遍缺乏知识/经验。因此,也许可以先找一些教程,对所涉及的技术有一个大致的了解。