如何将这个PHP、Javascript和HTML文档合并为一个文档
How to merge this PHP, Javascript and HTML document into one?
我正试图只上传一个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;
}
真的吗?您可以将整个html表单放入一个变量中,然后当用户访问页面时,php会检查表单是否已提交。如果提交了它,它什么也不做,而是将其余部分留给javascript。如果未提交,它将显示变量中的表单,并停止脚本的执行。这样,你就不必去除onclick或所有其他很酷的东西。
<html>
<?php $form=<form>...</form>;
if (!isset($_GET['submit']))
{die ("$form");}
<script>...</script>
</html>
这样,除非提交表单,否则不会执行您的javascript。
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 将文档的MongoDB字段合并到一个文档中
- 将json作为子文档合并到另一个json中
- 将多个文档就绪功能合并为一个
- 如何将这个PHP、Javascript和HTML文档合并为一个文档
- 获取mongodb文档的多个数组,并将它们合并为唯一值
- 如何合并电子表格并在新文档中设置其选项卡顺序
- Node.js使用request合并两个json文档
- 链接多个javascript文件而不缩小或合并到一个文档的方法
- 谷歌文档邮件合并脚本上周不工作
- 如何将异构数组合并到MongoDb中的单个文档