如何解决我如何使用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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。