viceversa - pasar variable php a javascript externo




Pasar un valor de JavaScript a una variable de PHP(con limitación) (2)

Lo que realmente estoy tratando de lograr:

Variables de PHP que obtienen valores de JavaScript en la misma página en un iFrame de Facebook. Está bien que la página vuelva a cargar para pasar el parámetro a sí mismo.

La manera más fácil: Genere un elemento de formulario, rellene con algunos campos de entrada (ocultos) y ENVÍELO a su servidor.

AJAX también es posible, y quizás más agradable para el usuario, ya que no requiere una recarga.

Como no está describiendo ningún problema en detalle , solo puedo suponer que se debe principalmente a una falta general de conocimiento / experiencia en estos asuntos de su parte. Así que tal vez busque algunos tutoriales primero, para obtener una comprensión general de las técnicas involucradas.

Entiendo que ya existen preguntas y respuestas que ya abordaron este asunto. Los he revisado, pero mi situación no me permite aplicar las soluciones que se ofrecen en estos hilos.

Dado que JavaScript es del lado del cliente y PHP es del lado del servidor, estas son las 2 soluciones que se ofrecen:

Método GET / POST (Publicación n. ° 3)

Método AJAX

Limitación: aplicación de la pestaña de la página de Facebook

No puedo usar los métodos anteriores para pasar parámetros a través de la URL ya que las pestañas de la página de Facebook se cargan en un iFrame, no tienen acceso a la cadena de consulta. Facebook proporciona una solución mediante el uso del parámetro app_data GET en el objeto signed_request Facebook junto con la codificación JSON.

Resolviendo la limitación: Usando app_data GET Parameter

Puedo pasar parámetros a la misma página cargando la misma página otra vez, pero todavía estoy tratando con variables y valores de 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
} 

Referencia: http://labs.thesedays.com/blog/2011/06/23/query-strings-for-facebook-page-tabs/

También probado:

Método de cookie (eliminado ya que todavía estoy tratando con variables y valores de PHP)

Usando JavaScript encodeURIComponent() y encodeURI() (enfoque erróneo ya que estos métodos codifican toda la URL y los parámetros pasados ​​no son reconocidos por json_decode )

Actualmente está probando: JSON con Ajax (XMLHttpRequest)

¿Enviar datos JSON de Javascript a PHP?

¿Cómo pasar datos de Javascript a PHP y viceversa?

Lo que realmente estoy tratando de lograr:

Variables de PHP que obtienen valores de JavaScript en la misma página en un iFrame de Facebook . Está bien que la página vuelva a cargar para pasar el parámetro a sí mismo.

fer.php (Ejemplo incorrecto)

function someValues(){
    varA = 123;
    varB = 456;
}

<?php
    $cupA = varA;
    $cupB = varB;
?>

He estado tratando de resolver este problema por días y me estoy volviendo loco hasta el punto de intentar engañar a json_decode agregando % a mis datos antes de agregarlo a una URL de redirección = x Realmente aprecio cualquier ayuda o dirección dada . ¡Gracias!


Aún no está claro si desea:

  1. pasar los datos que recibe en PHP a través de app_data a JavaScript, o

  2. pasar datos de JavaScript a PHP.

Pasar datos de PHP a JavaScript

<head>
<script type="text/javascript">
var app_data = <?php echo json_encode($appData); ?>;
</script>
</head>
<body>
...

Pasar datos de JavaScript a PHP

$.ajax({
    url: location.pathname, // current page
    type: 'POST',
    data: {
        vara: 'hello',
        varb: 'world'
    },
    success: function() {
        // ...
    }
});




facebook-iframe