如何将这个PHP,Javascript和HTML文件合并成一个?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将这个PHP,Javascript和HTML文件合并成一个?相关的知识,希望对你有一定的参考价值。

我试图上传CSV文件只使用一个html表单,然后使用phpjavascript将它保存在一个数组。

我有一些代码,即可以正常使用作为单独的文件。虽然,当我尝试将它们合并到一个文件,它拒绝工作和Javascript数组最终只是提醒如null

我想只能调用PHP如果表单已经公布,然后调用JavaScript只有当提交按钮被按下。

分离出的版本 - 工作

该HTML

<form action="yourscript.php" method="post" enctype="multipart/form-data">
 <input type="file" name="upload_file" />
 <input type="submit" />
</form>

的JavaScript和PHP

<?php
$csv_array = Array();
$file = fopen($_FILES['upload_file']['tmp_name'], 'r');
if($file){
    while (($line = fgetcsv($file)) !== FALSE) {
      //$line is an array of the csv elements
      array_push($csv_array,$line);
    }
    fclose($file);
}
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script>var your_array = <?php echo json_encode($csv_array); ?></script>
</head>
<body>

</body>
</html>

合并版本 - 不工作

<?php

if(isset($_POST['savecsv']))
{
    $csv_array = Array();
    $file = fopen($_FILES['upload_file']['tmp_name'], 'r');
    if($file)
    {
        while (($line = fgetcsv($file)) !== FALSE) 
        {
            //$line is an array of the csv elements
            array_push($csv_array,$line);
        }
        fclose($file);
    }
}

?>


<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script>
    function saveArray()
    {
        var your_array = <?php echo json_encode($csv_array); ?>

        alert(your_array);
    }
    </script>
</head>
<body>

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
 <input type="file" name="upload_file" />
 <input type="submit" name="savecsv" onClick="saveArray();"/>
</form>

</body>
</html>
答案

它的失败,因为当你点击按钮,表格提交到服务器之前onclick触发。为了这个工作,你需要将表格提交给服务器。你可以用一个真实的形式提交(这将刷新页面)做到这一点,你可以提交表单到<iframe>,或者您可以使用AJAX提交表单。

第一次加载页面,当然your_array为null,因为没有文件被上传。当onclick火灾(提交表单之前),它只是提醒从最初的页面加载此空值。

为了使您的当前解决方案的工作(重新加载整个页面),从PHP代码,而不是onclick内触发JavaScript的:

<?php
if (isset($csv_array)) {
    $json = json_encode($csv_array);
    echo <<<HTML
    <script>
        var your_array = $json;
        alert(your_array);
    </script>
HTML;
}
另一答案

真的吗?你可以把整个HTML表单到一个变量,然后当用户访问该网页,PHP检查形式是submited.If它被提交,它什么都不做,而是它留下其余javascript.If它不是提交后,它会显示在变量和停止的script.This方式执行的形式,你没有的onclick删除或你到了那里的其他很酷的东西。

 <html>
 <?php $form=<form>...</form>;
 if (!isset($_GET['submit']))
{die ("$form");} 

<script>...</script>
</html>

这样一来,除非表单提交你的JavaScript将不被执行。

以上是关于如何将这个PHP,Javascript和HTML文件合并成一个?的主要内容,如果未能解决你的问题,请参考以下文章

在 html 文本区域中显示文件内容时出现换行问题 - javascript PHP

如何使用 HTML 表单将 JavaScript 值传递到另一个 PHP 页面?

如何将此内容输出到文本区域?

如何将 javascript var 的 innerHTML 设置为 php/html 文本

如何将 php 与 html 和 Javascript 一起使用? [复制]

如何使用 Javascript 和 Ajax 将 HTML 单选按钮值传递给 PHP 变量?