首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何防止ajax请求之前点击OK按钮的onclick=“确认(‘')”消息?

要防止在 AJAX 请求之前点击 OK 按钮触发 onclick="确认('')" 消息,可以通过以下几种方法来实现:

方法一:禁用按钮直到请求完成

在发起 AJAX 请求之前,禁用按钮,请求完成后再启用按钮。这样可以防止用户在请求过程中重复点击按钮。

代码语言:txt
复制
function confirmAndSend() {
    // 禁用按钮
    document.getElementById('confirmButton').disabled = true;

    // 发起 AJAX 请求
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/your-endpoint', true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            // 请求完成,启用按钮
            document.getElementById('confirmButton').disabled = false;
            // 处理响应
        }
    };
    xhr.send();

    // 阻止 onclick 事件的默认行为
    return false;
}

方法二:使用 Promise 和 async/await

通过使用 Promise 和 async/await,可以更优雅地处理异步操作,并在请求完成前阻止按钮的点击事件。

代码语言:txt
复制
async function confirmAndSend() {
    // 禁用按钮
    document.getElementById('confirmButton').disabled = true;

    try {
        await sendAjaxRequest();
        // 请求完成,启用按钮
        document.getElementById('confirmButton').disabled = false;
    } catch (error) {
        // 处理错误
        document.getElementById('confirmButton').disabled = false;
    }
}

function sendAjaxRequest() {
    return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/your-endpoint', true);
        xhr.onreadystatechange = function() {
            if (xhr.readyState === 4 && xhr.status === 200) {
                resolve(xhr.responseText);
            } else if (xhr.readyState === 4) {
                reject(new Error('Request failed'));
            }
        };
        xhr.send();
    });
}

方法三:使用事件委托

通过事件委托,可以在父元素上监听按钮的点击事件,并在 AJAX 请求完成前阻止事件的进一步传播。

代码语言:txt
复制
document.getElementById('parentElement').addEventListener('click', function(event) {
    if (event.target.id === 'confirmButton') {
        event.preventDefault();
        confirmAndSend();
    }
});

function confirmAndSend() {
    // 禁用按钮
    document.getElementById('confirmButton').disabled = true;

    // 发起 AJAX 请求
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/your-endpoint', true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            // 请求完成,启用按钮
            document.getElementById('confirmButton').disabled = false;
            // 处理响应
        }
    };
    xhr.send();
}

应用场景

这种方法适用于需要在用户确认后发送 AJAX 请求的场景,例如表单提交、数据更新等。通过防止用户在请求过程中重复点击按钮,可以避免重复提交数据或产生不必要的错误。

参考链接

通过以上方法,可以有效防止在 AJAX 请求之前点击 OK 按钮触发 onclick="确认('')" 消息的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 弱弱地写了一篇前端教程

    分享一篇最近学习总结的前端表格制作教程,先看下方截图,具体演示的功能虽然简单,不过很有实际意义,主要涵盖表格展示数据、删除数据、修改数据、分页、模态窗等常见功能,其中也涉及一些样式的调整,比如隔行变色,此类文章网上很多很多,我也看过不少,但是网上文章都存着一个问题:很多文章代码写的很笼统,跳跃性比较大,你可能哪怕有一个地方看不懂,不知道怎么修改,程序就运行不起来,得不到想要的表格效果和功能,而此篇文章,我会尽可能详细介绍我做的功能的每一步是怎么得来的,并且本文源码也完全开源分享,运行中如果有任何问题,也欢迎留言提一些建议

    01
    领券