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请求)

使用 Gmail API 发送的邮件中缺少附件,但仅适用于收件人

AJAX POST 发送的 Javascript 数组

使用 JavaScript/jQuery 在重定向上发送 POST 数据? [复制]