【发布时间】:2018-06-24 04:04:07
【问题描述】:
我正在使用引导程序制作 HTML 表单,当用户单击提交按钮时,它会将数据提交到服务器上的 json 文件。问题是,每当我加载页面时,它已经向 json 文件提交了一堆空数据,当我单击按钮时它什么也不做。 我已经尝试了我想到的一切,但找不到解决方案。也许这里有人可以帮助我解决这个问题。
提前致谢。
这是我的代码:
<?php
$message = '';
$error = '';
if(isset($_POST["submit"]))
{
if(file_exists('tickets.json'))
{
$current_data = file_get_contents('tickets.json');
$array_data = json_decode($current_data, true);
$extra = array(
'titel' => $_POST["titel"],
'omschrijving' => $_POST["omschrijving"],
'datum' => $_POST["datum"],
'naam' => $_POST["naam"],
'TicketType' => $_POST["TicketType"],
);
$array_data[] = $extra;
$final_data = json_encode($array_data);
if(file_put_contents('tickets.json', $final_data))
{
$message = "<label class='text-success'>Ticket verstuurd!</label>";
}
}
else
{
$error = 'No JSON File';
}
}
?>
这是 html 位。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js">
</script>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-
beta.3/css/bootstrap.min.css" integrity="sha384-
Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy"
crossorigin="anonymous">
<link rel="stylesheet" href="main.css">
</head>
<body>
<script>
var id;
id = Math.floor((Math.random() * 999) + 1);
</script>
<form method="post" action="submit.php">
<?php
if(isset($error))
{
echo $error;
}
?>
<div class="center">
<div class="form-group">
<label for="Titel">Titel</label>
<input class="form-control" type="text" name="titel" id="Titel">
</div>
<div class="form-group">
<label for="Omschrijving">Omschrijving</label>
<textarea class="form-control" name="omschrijving" id="Omschrijving" rows="3"></textarea>
</div>
<div class="form-group">
<label for="Datum">Datum</label>
<input class="form-control" name="datum" type="date" id="Datum">
</div>
<div class="form-group">
<label for="Naam">Naam</label>
<input class="form-control" name="naam" type="text" id="Naam">
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="TicketType" id="TK_Rfc" value="rfc" checked>
RFC
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="TicketType" id="TK_Bug" value="bug">
BUG
</label>
</div><br>
<script class="center">document.write("#" + id);</script><br><br>
<button type="submit" class="btn btn-info">Submit</button>
</div>
<?php
if(isset($message))
{
echo $message;
}
?>
</form>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
</body>
</html>
【问题讨论】:
-
HTML 中没有提交页面的代码,所以我猜
if(isset($_POST["submit"])) { if(file_exists('tickets.json')) {在加载时正在执行。也永远不要在表单中调用任何东西name="submit" -
Also NEVER call anything name="submit" in a form声明的解释?只是好奇。另外,Roan,PHP 和 HTML 是否在同一个文件中?它们是两个单独的文件吗?试试<button type="submit" class="btn btn-info">Submit</button>提交按钮? -
是的,html与php在同一个文件中,我尝试更改按钮,现在它根本没有提交任何东西。
-
请相应地更新您的代码。现在很混乱。另外,我希望文件名为
submit.php? -
是的,文件名为 submit.php
标签: javascript php html json web