【发布时间】:2016-12-09 02:00:02
【问题描述】:
我正在尝试找出如何制作一个进度条来可视化提交表单的进度。现在我发现很多文章都是通过 AJAX/jQuery 将数据提交到一个单独的 php 文件中,并在该文件中解析数据。
但是当表单的 action 属性是 $_SERVER["PHP_SELF"] 并且在同一个文件中使用 php 处理数据时,我该怎么做。 (按下提交按钮后,页面刷新。)
例子:
<?php
if(isset($_POST['submit']) && !empty($_POST['submit'])){
// some validation code combined with error_message array here
// uploading data to server and database here
}
?>
...
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST" id="aaa" enctype="multipart/form-data">
<input type="text" name="title" id="title" size="55" maxlength="55" required>
<textarea name="description" id="description" maxlength="155" rows="3" cols="55" required></textarea>
<input type="file" name="images[]" id="file_input">
<input type="file" name="images[]" id="file_input">
<input type="file" name="images[]" id="file_input">
<input type="submit" value="Submit" name="submit" id="submit">
</form>
【问题讨论】:
-
您需要使用 AJAX 和 XHR 对象。提交 URL 的位置无关紧要:)。您可以在表单触发成功事件后手动启动刷新。
-
$_SERVER["PHP_SELF"]方法用帖子数据重新加载当前页面。您需要创建另一个端点以通过 ajax 提交数据。同时您的数据正在加载,您可以显示进度条。 -
以上两个cmets不正确。在没有 ajax 的情况下,有一些尴尬的方法可以做到这一点,但它们实际上只是在 ajax 文件上传被广泛支持之前的旧技巧。仍然需要以某种方式使用 javascript - 您是否正在尝试顶级支持古老的浏览器?如果没有,ajax 文件上传是目前最好的解决方案
-
@Steve 我不想支持一个古老的浏览器。我只是想知道如何编码。
-
@Steve 你的意思是目前为止最好的解决方案是通过 Ajax 将数据提交到不同的 php 解析文件以便能够可视化进度吗?
标签: javascript php html forms progress-bar