如何向Discord Webhook发送请求?现有代码报错求修复
修复Discord Webhook输入长度为0的错误
你的代码核心问题是页面加载时就提前获取了输入框的值,此时输入框是空的,之后用户输入内容后,webhook变量并不会自动更新,所以点击按钮时始终判断为空。
修复后的代码
var webhookInput = document.getElementById('webhookInput'); var webhookButton = document.getElementById('webhookBtn'); async function webhookRequest() { const webhook = webhookInput.value.trim(); // 每次调用时获取最新输入并去除首尾空格 try { // Discord Webhook验证需要发送POST请求(带空内容),GET请求会返回405 const response = await fetch(webhook, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ content: '' }) }); if (response.ok) { // 用response.ok判断更准确,覆盖200-299状态码 console.log('webhook valid'); localStorage.setItem('webhook', webhook); alert('Webhook验证成功!'); } else { alert('请确保你的Webhook链接有效。'); } } catch (err) { console.error(err); alert('请求出错,请检查网络或Webhook链接。'); } } webhookButton.addEventListener('click', function() { const webhook = webhookInput.value.trim(); if (webhook.length > 0) { webhookRequest(); } else { alert('请输入Webhook链接。'); } });
关键修改点
- 实时获取输入值:把
webhook = webhookInput.value移到点击事件和请求函数内部,确保每次操作都获取用户最新输入的内容,同时用trim()去除首尾空格,避免空字符误判。 - 修正请求方式:Discord Webhook不支持GET请求验证,必须发送POST请求(即使内容为空),否则会返回405错误,所以添加了
method: 'POST'和对应的请求头、空内容体。 - 优化状态判断:用
response.ok替代硬编码的200,能正确处理所有成功状态码(200-299)。 - 完善错误提示:给catch块添加用户可见的错误提示,同时在控制台输出详细错误信息便于调试。
内容的提问来源于stack exchange,提问作者Wocksips
相关产品推荐
相关产品推荐

