Si cargo una página PHP con Jquery .load (file.php), ¿puede el archivo incluido usar las variables php que se definieron en la página que llamó a load()?Jquery load() y variables PHP
Respuesta
Estás malentendido cómo funcionan las cosas.
- PHP se ejecuta antes de se emite ninguna respuesta navegador para el cliente, y todo el código se ejecuta en el servidor. Las variables declaradas en su archivo PHP se destruyen después de que se haya ejecutado todo el código PHP; ellos "desaparecen".
- JavaScript ejecuta después de que haya comenzado la respuesta del navegador, y todo el código se ejecuta en el cliente . Al "cargar" el resultado de salida del archivo PHP, no tendrá acceso a las variables de PHP, solo a la salida.
Si desea transferir ciertas variables de PHP a JavaScript, podría volcar parte de la producción en JSON en su script PHP, así:
<?PHP
header("Content-Type: application/json");
$myVariable = "hello world";
echo json_encode(array(array("myVariable" => $myVariable)));
/* Output looks like this:
[
{
"myVariable": "hello world"
}
]
*/
?>
Tienes JavaScript/JSON debe ser algo como esto:
$.getJSON("test.php", function(result) {
console.log(result[0].myVariable);
});
¿Tiene sentido?
Me gusta su explicación clara de * por qué * no va a funcionar y eso es cuando subí la respuesta. Pero su consejo para generar JSON con declaraciones simples de eco sin escalar es aterrador; es por eso que [json_encode()] (http://php.net/json_encode) existe. –
Bien, mis disculpas. Solo estaba tratando de hacerlo lo suficientemente fácil de entender. Ha pasado un tiempo desde que usé PHP, y en el pasado no tenía que serializar JSON desde PHP, así que es malo. –
Edité mi respuesta para hacer uso de 'json_encode'. –
ámbito de variables en el script PHP
cargado por JavaScript
es diferente de la página que cargó el script PHP
, por lo que la respuesta es no.
pero puede definir variables globales o usar variables super globales como ($_GET
, $_POST
, etc.) para obtener lo que desea.
Puede definir las variables pasadas por Javascript en la página de forma dinámica mediante PHP. –
@WatermarkStudios 'variables pasadas por Javascript' es diferente de lo que OP está preguntando:' puede el archivo incluido usar las variables php que se definieron en la página que llamó a load() '. – fardjad
Puede usarlos exactamente como describió TK Kocheran (aunque se recomienda mucho json_encode()). Tiene razón en que javascript no puede acceder directamente a las variables de PHP debido a la secuencia de carga en el ciclo de RESPUESTA, pero agregar una línea de PHP para definir una variable de Javascript con el mismo valor que la variable de PHP no es desconocida, ni ¿es una mala práctica a menos que los valores de las variables PHP sean sensibles? Usar las variables de sesión probablemente sería mejor si los datos confidenciales son un problema. –
No, usted tiene que pasar las variables que desea utilizar para su file.php
:
$('#yourdiv').load('file.php?var1=xyz&var2=xyz&var3=xyz');
Y entonces usted puede conseguir los de su archivo.php:
$var1 = $_GET['var1'];
$var2 = $_GET['var2'];
$var3 = $_GET['var3'];
Si hay una Muchas variables luego usan el método POST:
$('#yourdiv').load('file.php', {var1:x, var2:y, var3:z})
Y luego obtenga las variables en file.php:
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];
Esto también funciona ... Simplemente reemplazaría '' file.php? Var1 = xyz & var2 = xyz & var3 = xyz'' con ''file.php? Var1 = {$ xyz} & var2 = {$ xyz} & var3 = {$ xyz} '' si está utilizando variables rellenas del archivo PHP actual. Una vez más, toda la línea debería hacerse eco desde dentro de las etiquetas PHP. –
Aprecio mucho este método ya que usa la función jQuery 'carga' nativa. – RCNeil
Tendría que pasar esas variables al archivo PHP cargado a través de la función .load.
Ejemplo:
$("#objectID").load("test.php", { 'choices[]': ["{$choice1}", "{$choice2}"] });
Las variables definidas en el archivo PHP actual pasarían a formar parte del Javascript que carga el nuevo archivo PHP.
Por supuesto, esta línea debería repetirse desde etiquetas PHP. –
Sí, utilice el parámetro de datos, consulte http://api.jquery.com/load/:
$('#someelement').load(
"test.php",
{
'key1': '<?php echo $value1; ?>',
'key2': '<?php echo $value2; ?>'
}
);
Los parámetros se registran en el archivo test.php
y son accesibles como:
$_POST['key1']
$_POST['key2']
Esta es una solución limpia, pero tenga en cuenta que si desea usar las variables definidas en el archivo PHP actual, debe intercambiar los valores con variables PHP repetidas desde etiquetas PHP. –
El segundo argumento (params) de la función de carga de JQuery debe ser un objeto o una función de devolución de llamada, pero también podría ser una cadena vacía. Dependiendo de eso, la carga envía las solicitudes de envío u obtención.
Tuve la idea de cambiar automáticamente entre get y post, (por ejemplo, si se configuró una cookie), porque get es más rápido y está en caché, y la publicación es más segura.
Su peor para escribir la función de carga incluyendo el contenido dentro de la función de devolución de llamada dos veces que escribir algo así:
//get
var url="cache_dir/my_bag.html";
var params="";
if(document.cookie){
//post
url="post.php";
params="{my:bag}";
}
$(selector).load(url,params,function(){
...
});
- 1. PHP Lazy Load Iterator
- 2. cómo animar a jquery load()
- 3. jquery fadeout, load, fadein
- 4. jQuery iframe load() event?
- 5. Anulando jQuery(). Load()
- 6. JQuery Script Load Timing
- 7. jquery focus on load
- 8. Problema con CSS y .load() jquery en IE
- 9. JQuery $ (documento) .ready ajax load
- 10. Prevenir JQUERY .load del caché
- 11. jQuery And Drupal page load
- 12. Pase variables PHP a Javascript/jquery
- 13. jquery load with inline javascript
- 14. jquery .live on load event
- 15. jQuery .load() con efecto fadeIn
- 16. jQuery .delegate() no funciona en los eventos load y changeData
- 17. Python y Server Load
- 18. Page_Init y Load
- 19. Congelador cuando cargo tinyMCE a través de jQuery .load()
- 20. variables de Jquery variables
- 21. Función de devolución de llamada JQuery .load()
- 22. perdiendo css después de jquery ajax load
- 23. ¿jQuery $ .ajax o $ .load permiten responseType arrayBuffer?
- 24. función de llamada después de .load (Jquery)
- 25. Secuencias de comandos eliminadas con jQuery .load
- 26. Jquery .load Misma directiva de origen
- 27. jQuery .load() no funciona en mi imagen
- 28. jQuery y PHP Galletas
- 29. conservar clases de elementos jquery-ui después de jquery .load()
- 30. PHP y variables de entorno Apache
Hola @ user1091856 - la bienvenida a SO. Es una buena práctica aceptar una respuesta si funciona para usted (no solo esta pregunta, sino cuatro de sus preguntas anteriores). ¡aclamaciones! – themerlinproject