¿Cómo puedo llamar funciones PHP mediante JavaScript?

Resuelto wallgeek asked hace 54 años • 13 respuestas

Estoy intentando llamar a una función PHP desde un archivo PHP externo a un script JavaScript. Mi código es diferente y grande, así que estoy escribiendo un código de muestra aquí.

Este es mi código PHP:

<?php
function add($a,$b){
  $c=$a+$b;
  return $c;
}
function mult($a,$b){
  $c=$a*$b;
  return $c;
}

function divide($a,$b){
  $c=$a/$b;
  return $c;
}
?>

Este es mi código JavaScript:

<script>
  var phpadd= add(1,2); //call the php add function
  var phpmult= mult(1,2); //call the php mult function
  var phpdivide= divide(1,2); //call the php divide function
</script>

Entonces esto es lo que quiero hacer.

Mi archivo PHP original no incluye estas funciones matemáticas pero la idea es la misma.

Si de alguna manera no tiene una solución adecuada, entonces podría sugerir una alternativa, pero debería llamar a valores desde PHP externo.

wallgeek avatar Jan 01 '70 08:01 wallgeek
Aceptado

Sí, puedes realizar una solicitud ajax al servidor con tus datos en los parámetros de solicitud, así (muy simple):

Tenga en cuenta que el siguiente código utiliza jQuery

jQuery.ajax({
    type: "POST",
    url: 'your_functions_address.php',
    dataType: 'json',
    data: {functionname: 'add', arguments: [1, 2]},

    success: function (obj, textstatus) {
                  if( !('error' in obj) ) {
                      yourVariable = obj.result;
                  }
                  else {
                      console.log(obj.error);
                  }
            }
});

y your_functions_address.php así:

    <?php
    header('Content-Type: application/json');

    $aResult = array();

    if( !isset($_POST['functionname']) ) { $aResult['error'] = 'No function name!'; }

    if( !isset($_POST['arguments']) ) { $aResult['error'] = 'No function arguments!'; }

    if( !isset($aResult['error']) ) {

        switch($_POST['functionname']) {
            case 'add':
               if( !is_array($_POST['arguments']) || (count($_POST['arguments']) < 2) ) {
                   $aResult['error'] = 'Error in arguments!';
               }
               else {
                   $aResult['result'] = add(floatval($_POST['arguments'][0]), floatval($_POST['arguments'][1]));
               }
               break;

            default:
               $aResult['error'] = 'Not found function '.$_POST['functionname'].'!';
               break;
        }

    }

    echo json_encode($aResult);

?>
Victor avatar Apr 02 '2013 07:04 Victor

Prueba esto

<script>
  var phpadd= <?php echo add(1,2);?> //call the php add function
  var phpmult= <?php echo mult(1,2);?> //call the php mult function
  var phpdivide= <?php echo divide(1,2);?> //call the php divide function
</script>
Sandeep Kapil avatar Apr 02 '2013 06:04 Sandeep Kapil

use document.write por ejemplo,

<script>
  document.write(' <?php add(1,2); ?> ');
  document.write(' <?php milt(1,2); ?> ');
  document.write(' <?php divide(1,2); ?> ');
</script>
Anitha Mani avatar Nov 25 '2013 05:11 Anitha Mani