我如何使用confirm然后刷新页面?

问题描述

我做了一个打印页,从那里打印表格。但是,当您删除某些内容时,您还需要刷新页面才能应用该站点。这是我的代码

<a target="_blank" onclick=" asd()" href="<?= url('/delete?id=' . $row['product_id']) ?>" class="btn success">Delete</a>`

我的删除代码在这里

function asd() {
  var a = confirm('Are you sure you want to delete this product');
  if (a == 1) {
    setTimeout(function() {
      location.refresh();
    },1000);
    return 1;

  } else {
    return 0;
  }
}

单击“确定”后,当我删除某些内容页面不会刷新。

解决方法

无法找到location.refresh()方法

改为尝试location.reload()

通常,当某些代码不起作用时,请尝试专门隔离不起作用的内容,将来做此事的好方法是改用console.log并查看是否有结果。如果您这样做了,请尝试其他功能。如果没有用,那就是问题

,

我非常不喜欢将PHP用于此类事情,但是如果您想使用它,这是我会改变的事情。

您同时触发了onclick和href,但是实际上您想要一个接一个地执行,因为如果不这样做,您将陷入竞争状态。

而且,正如其他人已经指出的那样,没有refresh方法。使用reload

以下是该问题的解决方案:

<a target="_blank" onclick=" asd()" hclass="btn success">Delete</a>

<script>
  const url = <?=json_encode(url('/delete?id=' . $row['product_id']))?>;

  function asd() {
    var a = confirm('Are you sure you want to delete this product');
    if (a == 1) {
      // Make ajax request in js to make it async and do the refresh AFTER it has succeeded
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          // refresh on success
          location.refresh();
        }
      };
      xhttp.open("GET",url,true);
      xhttp.send();
      return 1;
    } else {
      return 0;
    }
  }
</script>

如果您想进一步改善项目,而不仅是对其进行错误修复,请参考以下提示:

  • 使函数名称有意义
  • 如果愿意,可以将PHP用于后端,但请避免将其与模板代码(HTML,JS,CSS)混合使用
  • 重构您的后端以使用正确的REST HTTP函数(DELETE,PUT,PATCH,...)
  • 为ajax安装一个库,而不使用标准的JS XMLHttpRequest。尝试使用Axios或jQuery。