Javascript POST 函数仅发送到一个 POST 位置
Posted
技术标签:
【中文标题】Javascript POST 函数仅发送到一个 POST 位置【英文标题】:Javascript POST function only sending to one POST location 【发布时间】:2022-01-18 02:56:42 【问题描述】:我试图将 html 表单数据发送到 2 个不和谐的 webhook,但它只会发送到第二个。它不显示任何错误消息或任何内容,只是不发送到第二个 webhook。
const request = new XMLHttpRequest();
request.open("POST", "https://discord.com/api/webhooks/920367877704523816/LpIHlNUfEsd0_lG5DWVL7zvCTSZQewmXYQprHnWpWNBESnVJnvVYF3JG9-SCZCzTpLcl");
request.open("POST", "https://discord.com/api/webhooks/919233892538540103/C75vznMMpgv2qqecF5Tmjw7C1xcLFlVSrMuCvdZ6Zg4jUsJrFkLSg6--ZRMN_lN809yp");
request.setRequestHeader('Content-type', 'application/json');
const params etc...
request.send(JSON.stringify(params));
【问题讨论】:
这可能是因为open
方法重新定义了链接 send
应该发送请求。我不知道这是否清楚,但也许尝试循环执行此操作会解决您的问题。
【参考方案1】:
就像其他人已经说过的那样,第二个 open
调用会重新初始化请求。
但请帮自己一个忙,将Fetch API 用于 HTTP 请求。它更清洁,更易于使用。尤其是与async/await
结合使用。
async function getSomething()
const response = await fetch('/someApiUrl');
// Waits until the request completes...
console.log(response);
【讨论】:
【参考方案2】:也许您想要两个请求,而不是重新定义您拥有的一个。
const requestDiscordOne = new XMLHttpRequest();
requestDiscordOne.open("POST", "https://discord.com/api/webhooks/920367877704523816/LpIHlNUfEsd0_lG5DWVL7zvCTSZQewmXYQprHnWpWNBESnVJnvVYF3JG9-SCZCzTpLcl");
requestDiscordOne.setRequestHeader('Content-type', 'application/json');
const params etc...
requestDiscordOne.send(JSON.stringify(params));
const requestDiscordTwo = new XMLHttpRequest();
requestDiscordTwo.open("POST", "https://discord.com/api/webhooks/919233892538540103/C75vznMMpgv2qqecF5Tmjw7C1xcLFlVSrMuCvdZ6Zg4jUsJrFkLSg6--ZRMN_lN809yp");
requestDiscordTwo.setRequestHeader('Content-type', 'application/json');
const params etc...
requestDiscordTwo.send(JSON.stringify(params));
显然针对可重用性和其他内容进行了优化,但希望您明白这一点。
祝你有美好的一天!
【讨论】:
【参考方案3】:您需要创建 2 个单独的请求对象,您将帖子 url 设置为同一个请求两次,因此它会占用最后一个分配的请求
const request = new XMLHttpRequest();
request.open("POST", "https://discord.com/api/webhooks/920367877704523816/LpIHlNUfEsd0_lG5DWVL7zvCTSZQewmXYQprHnWpWNBESnVJnvVYF3JG9-SCZCzTpLcl");
const request2 = new XMLHttpRequest();
request.open("POST", "https://discord.com/api/webhooks/920367877704523816/LpIHlNUfEsd0_lG5DWVL7zvCTSZQewmXYQprHnWpWNBESnVJnvVYF3JG9-SCZCzTpLcl");
request2.open("POST", "https://discord.com/api/webhooks/919233892538540103/C75vznMMpgv2qqecF5Tmjw7C1xcLFlVSrMuCvdZ6Zg4jUsJrFkLSg6--ZRMN_lN809yp");
request.setRequestHeader('Content-type', 'application/json');
request2.setRequestHeader('Content-type', 'application/json');
const params etc...
request.send(JSON.stringify(params));
request2.send(JSON.stringify(params));
你也可以将你的 url 移动到一个数组中并像这样迭代它
["https://discord.com/api/webhooks/920367877704523816/LpIHlNUfEsd0_lG5DWVL7zvCTSZQewmXYQprHnWpWNBESnVJnvVYF3JG9-SCZCzTpLcl", "https://discord.com/api/webhooks/919233892538540103/C75vznMMpgv2qqecF5Tmjw7C1xcLFlVSrMuCvdZ6Zg4jUsJrFkLSg6--ZRMN_lN809yp"].forEach((url) =>
const request = new XMLHttpRequest();
request.open("POST", url);
request.setRequestHeader('Content-type', 'application/json');
const params etc...
request.send(JSON.stringify(params));
)
【讨论】:
谢谢!以上是关于Javascript POST 函数仅发送到一个 POST 位置的主要内容,如果未能解决你的问题,请参考以下文章
接收通过 POST 从 Javascript 发送到 PHP 的对象
通过 POST 将 JavaScript 数组发送到 PHP
JavaScript之Ajax-2 Ajax(使用Ajax发送get请求使用Ajax发送post请求)