首页 > 解决方案 > 在 Javascript 中使用 PHP 文件

问题描述

我有一个 PHP 文件包含一些计算。现在,我想将计算集成到另一个文件中的 javascript 中。我如何在 javascript 中传递变量以在 php 中进行计算?

这是我的 JavaScript 代码:

 $("#upload").on("click", function(){
    var csv = $('#csv');
    var csvFile = csv[0].files[0];
    var ext = csv.val().split(".").pop().toLowerCase();

    if($.inArray(ext, ["csv"]) === -1){
        alert('upload csv');
        return false;
    }
    if(csvFile != undefined){
        reader = new FileReader();
        reader.onload = function(e){

            csvResult = e.target.result.split(/\r|\n|\r\n/);
            
            var temp=[];
            for(i=0;i< csvResult.length; i++){
                if(csvResult[i] != "" && csvResult[i] != null){
                var data = csvResult[i].split(",");
                var rssi = data[0];
                var distance = data[1];
                var rssisample = 8;
                    if(distance == 1){
                      //need to insert calculation method from php



                        temp.push(rssi);
                    }   

                }
            }

我有 php 文件名 myphpfile.php。所以,我想使用 javascript 中的变量和值在 php 文件中执行计算并返回到 javascript。请帮助我

这是我的 php 文件的一部分。例如:myphpfile.php

    <?php

// $arrTimeRSSI will read from javascript before perform this calculation


//calculate mean X using array_sum() method
$avgRSSI = array_sum($arrTimeRSSI)/($num_of_elements); 

function StandardDeviation($arrTimeRSSI){
    global $num_of_elements;
    global $avgRSSI;

    $variance = 0.0;
   
    foreach($arrTimeRSSI as $x){
        //sum of squares of difference between all numbers and mean X
        $variance += pow(($x - $avgRSSI), 2);
       
    }
    $newElements = $num_of_elements - 1;
    return (float)sqrt($variance/$newElements); 

} ?>

标签: javascriptphpjqueryarraysajax

解决方案


它不是那么简单,因为它是PHP在服务器和JavaScript客户端上执行的。您必须使用 ajax 将带有数据的请求发送到 php 脚本(发送到服务器)并将响应返回给客户端。

这是您的JavaScript外观示例:

$("#upload").on("click", function(){
    var csv = $('#csv');
    var csvFile = csv[0].files[0];
    var ext = csv.val().split(".").pop().toLowerCase();

    if($.inArray(ext, ["csv"]) === -1){
        alert('upload csv');
        return false;
    }
    if(csvFile != undefined){
        reader = new FileReader();
        reader.onload = function(e){

            csvResult = e.target.result.split(/\r|\n|\r\n/);
            
            var temp=[];
            for(i=0;i< csvResult.length; i++){
                if(csvResult[i] != "" && csvResult[i] != null){
                var data = csvResult[i].split(",");
                var rssi = data[0];
                var distance = data[1];
                var rssisample = 8;
                    if(distance == 1){
                        $.ajax({
                            url: '/path/to/phpfile.php',
                            type: 'post',

                            // transmit your data
                            data: {number1: '15', number2: '15'},

                            success: function (response) {
                                // handle the response
                                // response should contain 225 in this example
                            }
                        });
                        temp.push(rssi);
                    }   

                }
            }
        }
    }
});

这就是你的PHP fileat/path/to/phpfile.php可能的样子:

// do your calculations here and echo it
echo intval($_POST['number1']) * intval($_POST['number2']);

另一种方法是制作一个 php 文件并将您的 javascript 嵌入其中。但是此解决方案不允许您将数据从 javascript 传输到 php。因为 php 函数在服务器上执行,然后 javascript(带有计算的部分)被发送到客户端。像这个例子:

<?php 

// declare your php function here
function calculate() {
    return;
}

?>

<script>
$("#upload").on("click", function(){
    var csv = $('#csv');
    var csvFile = csv[0].files[0];
    var ext = csv.val().split(".").pop().toLowerCase();

    if($.inArray(ext, ["csv"]) === -1){
        alert('upload csv');
        return false;
    }
    if(csvFile != undefined){
        reader = new FileReader();
        reader.onload = function(e){

            csvResult = e.target.result.split(/\r|\n|\r\n/);
            
            var temp=[];
            for(i=0;i< csvResult.length; i++){
                if(csvResult[i] != "" && csvResult[i] != null){
                var data = csvResult[i].split(",");
                var rssi = data[0];
                var distance = data[1];
                var rssisample = 8;
                    if(distance == 1){
                        var calculation = <?php echo calculate(); ?>
                        temp.push(rssi);
                    }
                }
            }
        }
    }
});
</script>

推荐阅读