Я понимаю, что есть уже существующие вопросы и ответы, которые уже рассматривали этот вопрос. Я просмотрел их, но моя ситуация не позволяет мне применять решения, предлагаемые в этих потоках.
Учитывая, что JavaScript является клиентской, а PHP является серверной, это два предлагаемых решения:
Метод GET / POST (сообщение № 3)
Метод AJAX
Я не могу использовать вышеуказанные методы передачи параметров через URL-адрес, так как вкладки Facebook-страницы загружаются в iFrame, они не имеют доступа к строке запроса. Facebook обеспечивает обходное решение, используя параметр app_data
GET в Facebook signed_request
объект вместе с кодировкой JSON.
Я могу передавать параметры на одну и ту же страницу, загружая одну и ту же страницу, но я все еще имею дело только с переменными и значениями 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 (Droped, поскольку я все еще имею дело только с переменными и значениями PHP)
Использование JavaScript encodeURIComponent()
и encodeURI()
(неправильный подход, поскольку эти методы кодируют весь URL-адрес и переданные параметры не распознаются json_decode
)
В настоящее время Пытается: JSON с Ajax (XMLHttpRequest)
Отправить данные JSON с Javascript на PHP?
Как передавать данные с Javascript на PHP и наоборот?
PHP-переменные получают значения JavaScript на одной странице в iFrame Facebook . Это нормально, когда страница перезагружается, чтобы передать параметр самому себе.
fer.php (неправильный пример)
function someValues(){ varA = 123; varB = 456; } <?php $cupA = varA; $cupB = varB; ?>
Я пытался решить эту проблему в течение нескольких дней, и я схожу с ума, что даже пытаюсь обмануть json_decode
, добавив %
к моим данным, прежде чем добавлять его в URL-адрес перенаправления = x. Я действительно ценю любую помощь или направление , Благодаря!
Пока неясно, хотите ли вы:
передавать данные, которые вы получаете на PHP через app_data
на JavaScript или
передавать данные с JavaScript на PHP.
<head> <script type="text/javascript"> var app_data = <?php echo json_encode($appData); ?>; </script> </head> <body> ...
$.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>
То, чего я действительно пытаюсь достичь:
PHP-переменные получают значения JavaScript на одной странице в iFrame Facebook. Это нормально, когда страница перезагружается, чтобы передать параметр самому себе.
Самый простой способ: создать элемент формы, заполнить его некоторыми (скрытыми) полями ввода и POST его на ваш сервер.
AJAX также возможен и может быть приятнее для пользователя, так как он не требует перезагрузки.
Поскольку вы не описываете какие-либо проблемы в деталях , я могу только предположить, что это в основном из-за общего отсутствия знаний или опыта в этих вопросах с вашей стороны. Поэтому, возможно, сначала найдите некоторые учебные пособия, чтобы получить общее представление о применяемых методах.