gpt4 book ai didi

php - 如何将此 PHP、Javascript 和 HTML 文档合并为一个文件?

转载 作者:行者123 更新时间:2023-11-27 22:30:29 24 4
gpt4 key购买 nike

我尝试仅上传 CSV 文件,使用 HTML 表单,然后使用 PHP 和 Javascript 将其保存在数组中。

我有一些代码,可以作为单独的文件完美运行。虽然,当我尝试将它们合并到一个文件中时,它拒绝工作并且 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为空,因为没有上传文件。当 onclick触发(在提交表单之前),它只是在初始页面加载时提醒这个空值。

要使您当前的解决方案有效(重新加载整个页面),请从 PHP 代码内部触发 JavaScript,而不是 onclick :

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

关于php - 如何将此 PHP、Javascript 和 HTML 文档合并为一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com