Intereting Posts
Разработка переадресации ссылки администратора WordPress на сайт PHP, XML в HTML через XSLT делает HTML внутри кодированного CDATA PHP столкнулся с нарушением доступа в 77FCAFF8 Динамически изменить размер большого изображения на миниатюру в PHP? Отображение на стороне сервера визуализированного компонента responseJS в приложении PHP Joomla – динамический выпадающий список в панели администратора Что Apache должен поддерживать как mysqli, так и PDO? Добавление дополнительного текста поиска в поисковый запрос MediaWiki с помощью InputBox Строка PHP содержит « Загрузка файлов; Как использовать «chunking»? Paypal не может подключиться к серверу Sandbox. Ошибка возврата 14077410 (отказ от сбоев связи sslv3) В PHP / MySQL следует открыть несколько соединений с базой данных или поделиться 1? Требования к OSX – Composer – lib-openssl Удалить ребенка с определенным атрибутом, в SimpleXML для PHP Изменение меток страниц в Yii?

Передача значения JavaScript в переменную PHP (с ограничением)

Я понимаю, что есть уже существующие вопросы и ответы, которые уже рассматривали этот вопрос. Я просмотрел их, но моя ситуация не позволяет мне применять решения, предлагаемые в этих потоках.

Учитывая, что JavaScript является клиентской, а PHP является серверной, это два предлагаемых решения:

Метод GET / POST (сообщение № 3)

Метод AJAX


Ограничение: вкладка страницы Facebook

Я не могу использовать вышеуказанные методы передачи параметров через URL-адрес, так как вкладки Facebook-страницы загружаются в iFrame, они не имеют доступа к строке запроса. Facebook обеспечивает обходное решение, используя параметр app_data GET в Facebook 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 (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. Я действительно ценю любую помощь или направление , Благодаря!

Пока неясно, хотите ли вы:

  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() { // ... } }); 

Вы можете сделать это легко с помощью 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 также возможен и может быть приятнее для пользователя, так как он не требует перезагрузки.

Поскольку вы не описываете какие-либо проблемы в деталях , я могу только предположить, что это в основном из-за общего отсутствия знаний или опыта в этих вопросах с вашей стороны. Поэтому, возможно, сначала найдите некоторые учебные пособия, чтобы получить общее представление о применяемых методах.