javascript - Laravel PHP 脚本与对话框绑定
问题描述
我是 Web 开发和 Laravel 的新手。我正在创建一个本地 Web 应用程序,它将在一台使用 Windows 的电脑上运行。我有一个脚本,可以从相机设备读取数据。此脚本在用户按下按钮时启动。此按钮打开一个对话框并创建一个 ajax 调用以从 php 脚本中获取数据。
我在这里需要的是在对话框中创建一个取消按钮,该按钮将终止对 php 脚本的调用。
到目前为止会发生什么?我从取消按钮二创建了一个 ajax 调用。但是,直到我手动关闭另一个脚本(关闭我的相机),这个称为 PHP 的脚本才会执行。
我准备改变设计理念。我现在只是卡住了,没有足够的经验来决定要做什么。
这是到目前为止的脚本:
<script>
var updateBtn = document.getElementById("update");
var favDialog = document.getElementById("favDialog");
var cancelBtn = document.getElementById("cancel");
updateBtn.addEventListener("click", function onOpen() {
favDialog.showModal();
$.ajax({
type: 'GET',
url: '/getBar',
data: '_token = <?php echo csrf_token() ?>',
success: function(data) {
window.location.assign("/view?qr=" + data);
}
});
});
cancelBtn.addEventListener("click", function onOpen() {
$.ajax({
type: 'GET',
url: '/closeApp',
data: '_token = <?php echo csrf_token() ?>',
success: function() {}
});
});
</script>
编辑:ajax 调用abort()
确实有效。
解决方案
我认为您正在寻找的是 abort(),假设您使用的是 jQuery 3.x。
大多数 jQuery Ajax 方法返回一个 XMLHttpRequest(或等效的)对象。
请参阅文档:
中止。如果请求已经发送,此方法将中止请求
<script> var updateBtn = document.getElementById("update"); var favDialog = document.getElementById("favDialog"); var cancelBtn = document.getElementById("cancel"); var request = null; updateBtn.addEventListener("click", function onOpen() { favDialog.showModal(); request = $.ajax({ type: 'GET', url: '/getBar', data: '_token = <?php echo csrf_token() ?>', success: function(data) { window.location.assign("/view?qr=" + data); } }); }); cancelBtn.addEventListener("click", function onOpen() { if (request != null) { request.abort(); } }); </script>
推荐阅读
- python - 为什么全局不在 exec 命令中工作?
- c++ - 迭代 C++ 容器时是否可以定义“步长”大小?
- r - 使用不同的数据在图中定位和显示标签
- java - 从批处理文件运行可执行 jar,但打开控制台,以便用户可以看到输出。不使用“java -jar”
- excel - 如何计算excel中父类别的平均值?
- python - 在 spacy 中使用 POS 和 NER 进行实体提取
- locust - 蝗虫 0.9 到 1.3 例外:未定义任务。使用 @task 装饰器或设置用户的任务属性
- java - 如何仅在一个打印“你好”的窗格上创建一个 JButton
- python - 如果在 Django 中将一个属性设置为 true,如何将字段/模型设置为只读?
- node.js - 如何使我的微服务只能由 api 网关访问