[英]JavaScript alert window after php script executed
这是可以删除的脚本 - klient_usuwanie_script.php - 它工作得很好。 但我希望它在删除记录时显示 JavaScript 警报。 因此,在脚本删除记录之后,它是一个 window,其中显示了记录 - klient_usuwanie.php 但我希望它是这个 window 记录,但也带有警报
<?php
$sql = "DELETE FROM Klienci WHERE id= :del_klient";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(
'del_klient' => $_GET['id']
));
header('Location:klient_usuwanie.php?msg='.urlencode($msg).'');
?>
所以要清除它。 我有一个页面,我看到要删除的记录 - klient_usuwanie.php 带有“删除”按钮。 当我按下删除脚本 klient_usuwanie_script.php (包括在上面)删除一条记录。 之后它重定向到页面 klient_usuwanie.php 我可以看到其他记录,我可以删除它们。 但是在我删除一条记录后,我想要一个警报 window ,上面写着“记录已删除”就是这样。
当我注释掉
header('Location:klient_usuwanie.php?msg='.urlencode($msg).'');
并放
echo .$stmt->rowCount();
它告诉我一条记录已被删除,但我希望它出现在警报 window 中,理想情况下警报显示在重定向页面上。
您可以使用如下查询字符串重定向:
header('Location:klient_usuwanie.php?msg='.urlencode($msg).'&deleted=true');
在klient_usuwanie.php
中,解析查询参数并使用 javascript 显示警报,如下所示:
window.onload = function() {
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.get("deleted") === "true") {
alert("Record deleted");
}
}
添加到header('Location:klient_usuwanie.php?msg='.urlencode($msg).'');
header('Location:klient_usuwanie.php?msg='.urlencode($msg).'&skasowane=tak');
在 klient_usuwanie.php 中添加如下内容:
if($_GET['skasowane']=="tak"){echo "<script>alert(\"I am an alert box!\");</script>";}
echo '<script type="text/javascript" language="Javascript">alert("Record Deleted Thats all")
</script>';
免责声明:这个答案更多地与意图相关,而不是确切的请求。 为什么? 为此类请求重新加载整页是一种过时的做法。
如今,您更有可能依赖 AJAX 调用来处理这种情况。 删除端点将接收带有 ID 的请求并响应正确的 HTTP 代码以指示操作是否成功。
然后,您可以在前端实现必要的 JavaScript 代码来执行 AJAX 请求并根据需要操作 DOM。
这种方法对用户来说要好得多,因为浏览器不需要再次重新加载整个页面。 由于它只触发一个微小的 HTTP 请求,因此速度更快,滚动位置也不会跳动。
I've put up an example for the HTML on JS-Fiddle with jQuery to simplify the AJAX call: https://jsfiddle.net/sny9hw73/3/
例子:
<div id="entry-<?=$id;?>" class="banner-message">
<p>My Entry with real request</p>
<button onClick="delete(<?=$id;?>);">Delete Entry</button>
</div>
<script>
function delete(id) {
$.ajax({
url: '/entry.php,
data: { 'entryId': id },
type: 'DELETE',
success: function(result) {
$('#entry-' + id).remove();
},
fail: alert('Delete Record No: ' + id + ' failed')
}
</script>
注意:警报也不总是很好。 虽然很简单,但它们会停止代码执行,并且在某些情况下渲染效果不佳。 即:在网络视图内或在移动设备上。 它们还会导致全屏退出。
更专业的做法是让通知在 DOM 中播放。 从这个意义上说,Angular Material 的 Snackbar 更整洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.