Utilizar función PHP en variable JS

WWWW Seguir

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
Hola amigos.

Tengo una función en PHP, pero solo funciona para PHP :confused:

Pero tengo un archivo de JS enlazado desde HTML <script>...

HTML:
document.getElementById("etiqueta").innerHTML = variablejs;

Quisiera pasarle la funcion PHP

PHP:
miFuncionPHP(variablejs);

Algo así, si se pudiera mezclar PHP y JS:

PHP:
document.getElementById("etiqueta").innerHTML =  miFuncionPHP(variablejs);


Se que existen varias formas, pero quisiera saber si existe una sencilla donde no tenga que volver archivo PHP el archivo JS.

Saludos amigos. :encouragement:
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993
No te he entendido, pero vamos.


function IsOkay($args) {

return 'document.getElementById("etiqueta").innerHTML = '. $args .';';
}

Puedes usar un header con un metodo POST, para enviar la variable a los dos lenguajes.

O no entendi tu pregunta.
 

zahoribello

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
4 Sep 2018
Mensajes
315
Hola WWWW, normalmente lo que puedes hacer con JS o JQUERY es interactuar con el PHP. Ejemplo: cuando usas document.getElementById("etiqueta").innerHTML lo igualas a alguna variable, array transformado en json, etc. pero de esa forma que deseas no puedes, ahora que quieras ejecutar el php para que te arroje un resultado x para colocarlo en document.getElementById("etiqueta").innerHTML puedes usar AJAX. Yo normalmente para no estar consultando a cada rato saco las etiquetas en un json y con un evento de ejecucion consulto directamente y es mas rápido.
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
No te he entendido, pero vamos.


function IsOkay($args) {

return 'document.getElementById("etiqueta").innerHTML = '. $args .';';
}

Puedes usar un header con un metodo POST, para enviar la variable a los dos lenguajes.

O no entendi tu pregunta.

Es un archivo ya JS y la variablejs, viene desde muchas lineas +200 antes en el documento JS, por lo que solo en ese momento se desea pasarle una funcion PHP.

Podria pasar la funcion a JS, pero en realidad es un metodo de una clase en PHP

Hola WWWW, normalmente lo que puedes hacer con JS o JQUERY es interactuar con el PHP. Ejemplo: cuando usas document.getElementById("etiqueta").innerHTML lo igualas a alguna variable, array transformado en json, etc. pero de esa forma que deseas no puedes, ahora que quieras ejecutar el php para que te arroje un resultado x para colocarlo en document.getElementById("etiqueta").innerHTML puedes usar AJAX. Yo normalmente para no estar consultando a cada rato saco las etiquetas en un json y con un evento de ejecucion consulto directamente y es mas rápido.

Bueno creo que pasare el js a tipo .php con header JS.

Y imprimo el JS que quiero, pero tendría que obtener esta variable por otro lado, pero si es posible obtenerla en este caso, de lo contrario usuaria una variable de sesión.

Gracias por sus respuestas. :encouragement:
 

Mask7OfDragon

VIP
Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
17 Mar 2017
Mensajes
1.993
si la variable es obtenida, desde X posición lo mas facil es realizar DOM al mismo sitio o realizar con un header una redirecion con la variable a los dos lenguajes con JS o PHP.
 

zahoribello

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
4 Sep 2018
Mensajes
315
Es un archivo ya JS y la variablejs, viene desde muchas lineas +200 antes en el documento JS, por lo que solo en ese momento se desea pasarle una funcion PHP.

Podria pasar la funcion a JS, pero en realidad es un metodo de una clase en PHP



Bueno creo que pasare el js a tipo .php con header JS.

Y imprimo el JS que quiero, pero tendría que obtener esta variable por otro lado, pero si es posible obtenerla en este caso, de lo contrario usuaria una variable de sesión.

Gracias por sus respuestas. :encouragement:

Yo siempre digo, que la programación es jugar de aquí y aya para poder encontrar la solución. por lo cual si estas llamando el php que transforma a js para que imprima en el footer del documento html, recuerda que todo esto va en cascada antes de la llamada del php declara una variable var valor1; y carga tus variables que estas usando en un array y lánzalo en un json allí para que se te sea fácil llamar las variables que usaras en js que generas con el php.
 

Andres128

Iota
Programador
Verificación en dos pasos activada
Desde
17 Feb 2012
Mensajes
2.391
Yo no entiendo muy bien lo que quieres hacer pero con ajax se podría hacer, algo así:

El archivo html:

HTML:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <script>
!function(t,e){function n(t){return t&&e.XDomainRequest&&!/MSIE 1/.test(navigator.userAgent)?new XDomainRequest:e.XMLHttpRequest?new XMLHttpRequest:void 0}function o(t,e,n){t[e]=t[e]||n}var r=["responseType","withCredentials","timeout","onprogress"];t.ajax=function(t,a){function s(t,e){return function(){c||(a(void 0===f.status?t:f.status,0===f.status?"Error":f.response||f.responseText||e,f),c=!0)}}var u=t.headers||{},i=t.body,d=t.method||(i?"POST":"GET"),c=!1,f=n(t.cors);f.open(d,t.url,!0);var l=f.onload=s(200);f.onreadystatechange=function(){4===f.readyState&&l()},f.onerror=s(null,"Error"),f.ontimeout=s(null,"Timeout"),f.onabort=s(null,"Abort"),i&&(o(u,"X-Requested-With","XMLHttpRequest"),e.FormData&&i instanceof e.FormData||o(u,"Content-Type","application/x-www-form-urlencoded"));for(var p,m=0,v=r.length;v>m;m++)p=r[m],void 0!==t[p]&&(f[p]=t[p]);for(var p in u)f.setRequestHeader(p,u[p]);return f.send(i),f},e.nanoajax=t}({},function(){return this}());
function test(){
    var my_variable="forobeta";
    document.getElementById('button_busqueda').disabled=true; /* desactivar boton de ejecutar ejemplo*/
    document.getElementById('image_esperaaa').style.display="block"; /* boton de una imagen wait o esperar */
    /* hago un post a indice.php enviado como cuerpo la variable antes asignada*/
    nanoajax.ajax({url: 'http://localhost/indice.php', method: 'POST', body: 'variable=' + my_variable},
            function (code, res){
                if(code === 200){
                    if(res === "null"){
                        document.getElementById('resultado_urrr').innerHTML = "hubo un error";
                    }else{
                        /*si el codigo de resultado es ok y el resultado es nulo imprimo el resultado*/
                        document.getElementById('resultado_urrr').innerHTML = res; /* resultado OK */
                    }
                }else{
                    document.getElementById('resultado_urrr').innerHTML = "error: " + code;
                }
                document.getElementById('button_busqueda').disabled=false; /* activo boton de ejecutar */
                document.getElementById('image_esperaaa').style.display="none";/* oculto la imagen de wait o esperar */
            }
            );
}
  </script>
</head>
<body>
<button onclick="test()" id="button_busqueda" >clickeame bro :D</button>
<img src="" alt="" id="image_esperaaa" style="display: none;" />
<div id="resultado_urrr"></div>
</body>
</html>

Bueno y en el archivo php: indice.php

PHP:
<?php
function my_function($valor){
    echo "hola = " . $valor;
}
if (isset($_POST['variable'])){
    my_function($_POST['variable']);
}
?>

Dando como resultado hola = forobeta
 
Última edición:

Adrián Freecss

Eta
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
27 Ene 2014
Mensajes
1.478
HTML:
document.getElementById("etiqueta").innerHTML =  <?php echo miFuncionPHP(variablejs);  ?>
Podría funcionar igual.
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.242
Yo no entiendo muy bien lo que quieres hacer pero con ajax se podría hacer, algo así:

El archivo html:

HTML:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <script>
!function(t,e){function n(t){return t&&e.XDomainRequest&&!/MSIE 1/.test(navigator.userAgent)?new XDomainRequest:e.XMLHttpRequest?new XMLHttpRequest:void 0}function o(t,e,n){t[e]=t[e]||n}var r=["responseType","withCredentials","timeout","onprogress"];t.ajax=function(t,a){function s(t,e){return function(){c||(a(void 0===f.status?t:f.status,0===f.status?"Error":f.response||f.responseText||e,f),c=!0)}}var u=t.headers||{},i=t.body,d=t.method||(i?"POST":"GET"),c=!1,f=n(t.cors);f.open(d,t.url,!0);var l=f.onload=s(200);f.onreadystatechange=function(){4===f.readyState&&l()},f.onerror=s(null,"Error"),f.ontimeout=s(null,"Timeout"),f.onabort=s(null,"Abort"),i&&(o(u,"X-Requested-With","XMLHttpRequest"),e.FormData&&i instanceof e.FormData||o(u,"Content-Type","application/x-www-form-urlencoded"));for(var p,m=0,v=r.length;v>m;m++)p=r[m],void 0!==t[p]&&(f[p]=t[p]);for(var p in u)f.setRequestHeader(p,u[p]);return f.send(i),f},e.nanoajax=t}({},function(){return this}());
function test(){
    var my_variable="forobeta";
    document.getElementById('button_busqueda').disabled=true; /* desactivar boton de ejecutar ejemplo*/
    document.getElementById('image_esperaaa').style.display="block"; /* boton de una imagen wait o esperar */
    /* hago un post a indice.php enviado como cuerpo la variable antes asignada*/
    nanoajax.ajax({url: 'http://localhost/indice.php', method: 'POST', body: 'variable=' + my_variable},
            function (code, res){
                if(code === 200){
                    if(res === "null"){
                        document.getElementById('resultado_urrr').innerHTML = "hubo un error";
                    }else{
                        /*si el codigo de resultado es ok y el resultado es nulo imprimo el resultado*/
                        document.getElementById('resultado_urrr').innerHTML = res; /* resultado OK */
                    }
                }else{
                    document.getElementById('resultado_urrr').innerHTML = "error: " + code;
                }
                document.getElementById('button_busqueda').disabled=false; /* activo boton de ejecutar */
                document.getElementById('image_esperaaa').style.display="none";/* oculto la imagen de wait o esperar */
            }
            );
}
  </script>
</head>
<body>
<button onclick="test()" id="button_busqueda" >clickeame bro :D</button>
<img src="" alt="" id="image_esperaaa" style="display: none;" />
<div id="resultado_urrr"></div>
</body>
</html>

Bueno y en el archivo php: indice.php

PHP:
<?php
function my_function($valor){
    echo "hola = " . $valor;
}
if (isset($_POST['variable'])){
    my_function($_POST['variable']);
}
?>

Dando como resultado hola = forobeta

Estoy seguro que así funciona y seria la mejor forma.

Pero no tenia ganas de programar :sleeping: al final encontré la misma clase en JS jajajaja


HTML:
document.getElementById("etiqueta").innerHTML =  <?php echo miFuncionPHP(variablejs);  ?>
Podría funcionar igual.

Interesante lo que comentas, pero tengo dudas si funciona, seria de probar.

De funcionar seria una forma muy facil de lo que digo.

Me guardo sus código para el futuro, espero no olvidarlos o volver a preguntar lo mismo.

Gracias por responder, saludos amigos :encouragement:
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba