为了账号安全,请及时绑定邮箱和手机立即绑定

执行 php 脚本后的 JavaScript 警报窗口

执行 php 脚本后的 JavaScript 警报窗口

阿波罗的战车 2022-11-27 16:44:37
这是可能会删除的脚本 - klient_usuwanie_script.php - 它运行良好。但我希望它在删除记录时显示 JavaScript 警报。所以在脚本删除记录后,它是一个显示记录的窗口 - klient_usuwanie.php 但我希望它是这个带有记录的窗口,但也有一个警告说“记录已删除”<?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 页面,我可以看到其他记录,我可以删除它们。但是在我删除一条记录后,我想要一个警告窗口,上面写着“记录已删除”,仅此而已。当我评论出来header('Location:klient_usuwanie.php?msg='.urlencode($msg).'');并放echo  .$stmt->rowCount();它向我显示一条记录已被删除,但我希望它位于警报窗口中,并且理想情况下会在重定向页面上显示警报。
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

您可以像这样使用查询字符串重定向:


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");

  }

}


查看完整回答
反对 回复 2022-11-27
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

添加 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>";}


查看完整回答
反对 回复 2022-11-27
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

对现代方法的建议:

免责声明:这个答案比确切的要求更符合意图。为什么?为这种请求重新加载整个页面是一种过时的做法。

如今,您更可能依赖 AJAX 调用来处理此类场景。删除端点将接收带有 ID 的请求并响应正确的 HTTP 代码以指示操作是否成功。

  • Restful HTTP 端点当然可以用 PHP 编写,以响应数据而不是 HTML。

  • 查看带有良好端点示例的 Swagger:https ://editor.swagger.io

在您的前端,您可以实施必要的 JavaScript 代码来执行 AJAX 请求并根据需要操作 DOM。

  • 尽管许多人会使用像 Angular 或 React 这样的框架来标准化这个工作流程。

用户体验

这种方法对用户来说要好得多,因为浏览器不需要再次重新加载整个页面。因为它只触发一个微小的 HTTP 请求,所以速度更快,滚动位置也不会跳来跳去。

我已经用 jQuery 在 JS-Fiddle 上举了一个 HTML 的例子来简化 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 更简洁。


查看完整回答
反对 回复 2022-11-27
  • 3 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信