javascript - 在 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);
} ?>
解决方案
它不是那么简单,因为它是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
at/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>
推荐阅读
- javascript - Uncaught (in promise) SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
- gnuplot - Gnuplot - 轴上的线
- solr - SOLR Solarium 我们可以使用过滤查询和 dismax 查询吗?
- sql - SQL 将行从一个表分配到另一个表
- ansible - 如何使用 ansible 清除不在列表中的任何 ufw 条目
- qt - Qt QML 有 TabButton 获取自己的索引
- linux - OpenCV:如何获取可用编解码器的列表?
- javascript - 尝试制作立方码计算器但公式不一致
- safari - Safari:重新加载后“由于访问控制检查而无法加载 Fetch API”
- angular - ControlValueAccessor 无法清除输入值