繁体   English   中英

从单独的 php 脚本调用 javascript 函数?

[英]Calling javascript function from a separate php script?

我在“generate.php”脚本中编写了javascript函数,在单独的脚本中编写了“call.php”。 如何在“call.php”脚本中添加一个按钮来触发“generate.php”中的函数?

"generate.php": javascript; 'save' 调用的函数

<?php
include_once("connection.php");


$chart_data = '';

$db = new dbObj();
$connString =  $db->getConnstring();
$id=$_GET['id'];
$query = $connString->prepare("SELECT ID FROM Datas WHERE ID=?");
$query->bind_param('s',$id);
$query->execute();
$result=$query->get_result();

while($row = mysqli_fetch_array($result))
{
    $chart_data .= "{ ID:'".$row["ID"]."'},";

}
echo $chart_data;

$chart_data = substr($chart_data, 0);

?>

<!DOCTYPE html>
<html>
 <head>
  <title> PHP & Mysql</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.1/dist/html2canvas.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>
 </head>
 <body>
  <br /><br />
  <div id="chart"></div>
  <button id="save">Download</button>
  <div class="container" style="width:900px;">
   <h2 align="center">MySQL</h2>
   <h3 align="center">Data</h3>   
   <br /><br />
   <div id="bar-chart" data-colors="#29abe2,#ffc142,#1ab394, #FF0000, #FFFF00" ></div>
 </body>
</html>

<script>

$("#save").click(function() {
    html2canvas(document.getElementById('bar-chart')).then(canvas => {
        var w = document.getElementById("bar-chart").offsetWidth;
        var h = document.getElementById("bar-chart").offsetHeight;

        var img = canvas.toDataURL("image/jpeg", 1);

        var doc = new jsPDF('L', 'pt', [w, h]);
        doc.addImage(img, 'JPEG', 10, 10, w, h);
        doc.save('xkey.pdf');
    }).catch(function(e) {
        console.log(e.message);
    });
})
</script>

"调用.php";

<?php
include_once("generate.php");

$connect = mysqli_connect("localhost", "root", "", "db01");
$output = '';
$sql = "SELECT * FROM Datas WHERE ID LIKE '%" .$_POST["search"]."%'";
$result = mysqli_query($connect, $sql);

if(mysqli_num_rows($result) > 0)
{
 $output .= '<h4 align = "center">Search Result</h4>';
 $output .= '<div class="table-responsive">
                <table class = "table table bordered">
                   <tr>
                        <th>ID</th>

                        <th>Generate</th>       
                    </tr>';

    while($row = mysqli_fetch_array($result))
    {
        $output .= '
                <tr>
                    <td>'.$row["ID"].'</td>

                    <td><a href="generate.php?id='.$row["ID"].'" target="_blank"><button  id="gen" name="generate" class="btn btn-primary"><i class="fa fa"" aria-hidden="true"></i>Generate</button></a></td>      
                </tr>
            ';
    }
    echo $output;

}
else
{
    echo "Data not found";
}

?>

您的 pos-PHP 代码必须位于同一文档中。 所以要么通过<script src="generate.php">或通过<? require 'generate.php'; ?> <? require 'generate.php'; ?>

如果您需要在单独的脚本中使用相同的功能,您应该将您的 js 函数提取到一个文件中。 不要忘记命名它:

function giveItADescriptiveName() {
    html2canvas(document.getElementById('bar-chart')).then(canvas => {
         // etc
    }).catch(function(e) {
        console.log(e.message);
    });
}

然后,您可以将该脚本包含在您可能需要的任何文件中:

<script src="path/to/where/you/saved/it/whatever-you-called-the-file.js"></script>

最终,您将函数作为处理程序传递:

<script>
$("#save").click(giveItADescriptiveName());
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM