在Javascript中使用PHP文件[关闭]

Posted

技术标签:

【中文标题】在Javascript中使用PHP文件[关闭]【英文标题】:Use PHP file in Javascript [closed] 【发布时间】:2021-02-02 05:42:36 【问题描述】:

我有一个 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); 

 ?>

【问题讨论】:

你需要使用ajax。有很多这样的例子。 你已经用 AJAX 标记了这个,所以我们假设你知道 AJAX,希望?如果是这样,那么您的确切问题/问题是什么?这不是免费的 write-my-code 服务,也不是教程网站。如果您需要 AJAX 教程,网上已经有数百个。如果您有代码中的特定编程问题,我们将帮助您解决。你试过什么?你到底卡在哪里了? 是否需要使用ajax类型的POST?但我的 php 文件不包含方法 post。还能申请吗? “我的 php 文件不包含方法 post”...这是什么意思? PHP 可以轻松地处理 POST 请求,如果您编写代码来实现它。为了清楚起见,您应该向我们展示 PHP 代码,如果您已经编写了它。然后我们可以确切地看到需要进行哪些修改(如果有的话)。 我的意思是一个直接的 php 脚本。我已经用我的 php 文件更新了我的问题。非常感谢您的建议。 【参考方案1】:

这并不简单,因为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 file/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>

【讨论】:

processData: false, contentType: false 在这里不应该是必需的,因为没有发送文件数据,只有两个数字。事实上,使用它们甚至可能会导致问题。【参考方案2】:

这可以通过创建一个表单数据并将其传递给它返回值的 php 文件来完成。 根据我的经验,最好传递 json 值并从 php 文件中返回它们。 javascript函数:

function example()
  var form_data = new FormData();
  form_data.append("Variable1ToPass","test1");
  form_data.append("Variable2ToPass","test2");
  $.ajax(
    url: '/ThePhpFileYourReferTo.php',
    type: 'POST',
    dataType: 'json',
    cache: false,
    async: false,
    data: form_data,
    contentType: false,
    processData: false,
    error: function(ReturnData)
      //here do the error handling
      console.log(ReturnData);
      return;
    ,
    success: function(ReturnData) 
      console.log(ReturnData.ResultOfCalculation);
      return;
    
  );

在php文件(ThePhpFileYourReferTo.php)中:

$DataToReturn = [];
$DataToReturn['SubmittedValue'] = $_POST;
$Variable2ToPass = $_POST['Variable2ToPass'];
$Variable2ToPass = $_POST['Variable2ToPass'];
//here do the calculation and write in the return variable
$DataToReturn['ResultOfCalculation'] = "OK DONE";
header('Content-type: application/json');
echo json_encode($DataToReturn);

【讨论】:

以上是关于在Javascript中使用PHP文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 和 php 连接到 phpmyadmin 上的数据库

用于 Web 开发和设计的有用 Vim 插件(php、html、css、javascript)? [关闭]

在PHP文件中实现javascript时显示/隐藏功能不起作用[关闭]

如何使用Javascript / PHP录制用户的声音? [关闭]

在 PHP 代码中使用 JavaScript [关闭]

使用 jquery 或 javascript 在 php 页面发送值 [关闭]