JavaScript 在 php 脚本执行后提醒 window
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 代码以指示操作是否成功。
- Restful HTTP 端点当然可以写成 PHP 来响应数据而不是 HTML.
- 查看带有良好端点示例的 Swagger:https://editor.swagger.io
在您的前端,您可以实施必要的 JavaScript 代码来执行 AJAX 请求并根据需要操作 DOM。
- 尽管许多人会使用 Angular 或 React 等框架来标准化此工作流程。
用户体验
这种方法对用户来说要好得多,因为浏览器不需要再次重新加载整个页面。因为它只触发一个微小的 HTTP 请求,所以速度快得多,滚动位置也不会跳来跳去。
我在 JS-Fiddle 上为 HTML 和 jQuery 举了一个例子来简化 AJAX 调用:
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 在这个意义上更整洁。
这里是可以删除的脚本 - 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 代码以指示操作是否成功。
- Restful HTTP 端点当然可以写成 PHP 来响应数据而不是 HTML.
- 查看带有良好端点示例的 Swagger:https://editor.swagger.io
在您的前端,您可以实施必要的 JavaScript 代码来执行 AJAX 请求并根据需要操作 DOM。
- 尽管许多人会使用 Angular 或 React 等框架来标准化此工作流程。
用户体验
这种方法对用户来说要好得多,因为浏览器不需要再次重新加载整个页面。因为它只触发一个微小的 HTTP 请求,所以速度快得多,滚动位置也不会跳来跳去。
我在 JS-Fiddle 上为 HTML 和 jQuery 举了一个例子来简化 AJAX 调用: 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 在这个意义上更整洁。