0

我了解现有的问题和答案已经解决了这个问题。我已经查看了它们,但我的情况不允许我应用这些线程中提供的解决方案。

鉴于 JavaScript 是客户端而 PHP 是服务器端,以下是提供的两种解决方案:

GET/POST 方法(发布 #3)

AJAX 方法


限制:Facebook 页面选项卡应用程序

我无法使用上述通过 URL 传递参数的方法,因为 Facebook 页面选项卡已加载到 iFrame 中,它们无权访问查询字符串。app_dataFacebook 通过使用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添加%到我的数据来欺骗我真的很感激任何帮助或指导。谢谢!

4

3 回答 3

4

目前尚不清楚您是否要:

  1. 将您在 PHP 中收到的数据传递app_data给 JavaScript,或

  2. 将数据从 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() {
        // ...
    }
});
于 2012-06-14T10:22:49.573 回答
2

您可以使用 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>   
于 2012-12-08T15:04:03.117 回答
-1

我真正想要实现的目标:

PHP 变量在 Facebook iFrame 的同一页面中获取 JavaScript 值。页面重新加载以将参数传递给自身是可以的。

最简单的方法:生成一个表单元素,用一些(隐藏的)输入字段填充它,然后将其发布到您的服务器。

AJAX 也是可能的,并且可能对用户更好,因为它不需要重新加载。

由于您没有详细描述任何问题,我只能假设这主要是由于您在这些问题上普遍缺乏知识/经验。因此,也许首先寻找一些教程,以大致了解所涉及的技术。

于 2012-06-14T09:53:19.213 回答