1. ホーム
  2. javascript

[解決済み] JavaScriptでPHPの関数を呼び出すにはどうしたらよいですか?

2022-03-04 22:43:44

質問

外部PHPファイルからJavaScriptスクリプトにPHP関数を呼び出そうとしています。私のコードは異なっていて大きいので、ここにサンプルコードを書いています。

これは私の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;
}
?>

これは私の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>

ということで、こんな感じです。

私の オリジナル PHPファイルにはこれらの数学的な関数は含まれていませんが、考え方は同じです。

もし、適切な解決策がない場合は、次のようにしてください。 お願い は、代替案を提案しますが、それは外部のPHPから値を呼び出す必要があります。

解決方法は?

はい、このようにリクエストパラメータにデータを指定してサーバーにajaxリクエストを行うことができます(非常に簡単です)。

以下のコードでは 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);
                  }
            }
});

とyour_functions_address.phpをこのようにします。

    <?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);

?>