JavaScript POST

  1. [在 JavaScript 中使用 XHR(XML HTTP Request) 发送没有表单的 POST 数据

  2. [在 JavaScript 中使用 Fetch API 发送没有表单的 POST 数据

  3. [在 JavaScript 中使用 Navigator.sendBeacon() 发送没有表单的 POST 数据

[在 JavaScript 中使用 XHR(XML HTTP Request) 发送没有表单的 POST 数据]

XHR 是一个对象,用于在 JavaScript 中发出 HTTP 请求。它有助于与服务器进行交互并在客户端和服务器之间交换数据。即使不刷新整个页面,我们也可以从服务器中提取数据。它使用户仅破坏页面的一部分就可以继续工作。我们可以使用这种方法发送 POST 数据,而无需使用表单。

const URL = 'delftstack.com'
var xhr = new XMLHttpRequest();
xhr.open("POST", URL, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({
    name: 'DelftStack'
}));

[在 JavaScript 中使用 Fetch API 发送没有表单的 POST 数据]

JavaScript 提取 API,例如 XHR,有助于将 HTTP 请求发送到服务器。但是 XHR 没有利用承诺,导致代码混乱不整洁。要使用 Fetch API,我们必须调用 fetch() 方法。它接受以下参数:

  • URL:从中请求数据的 API 的 URL。

  • object
    

    :这是一个对象,用于指定有关所请求类型的其他属性。它具有 3 个属性:

    • method:它指定诸如 GETPOST 之类的方法。在这种情况下,其值应为 POST,因为我们正在发出 POST 请求。
    • bodybody 对象包含要发送的数据。
    • headers:这是一个可选参数,可帮助我们对 HTTP 请求和响应标头执行各种操作。

fetch() 方法之后,我们指定诺言方法 then()catch()。如果 fetch() 返回的 promiseresolved,则执行 then() 中指定的函数,否则返回的 promiserejected,并调用 catch() 内部的函数。

let data = {name: 'DelftStack'};
fetch("https://randomuser.me/api/?results=10", {
  method: "POST", 
  body: JSON.stringify(data)
}).then(res => {
  console.log("Promise resolved", res);
});

[在 JavaScript 中使用 Navigator.sendBeacon() 发送没有表单的 POST 数据]

Navigator.sendBeacon() 方法有助于通过 HTTP 请求将数据异步发送到 Web 服务器。它的主要应用是将网站分析数据发送到服务器,但也可以用于发送 POST 数据。

let data = {name: 'DelftStack'};
navigator.sendBeacon('https://randomuser.me/api/?results=10', data);
### 如何在 JavaScript 中实现 POST 请求 要在 JavaScript 中发送跨域的 POST 请求,可以使用多种方法来完成此操作。以下是几种常见的技术及其具体实现方式。 #### 使用 `XMLHttpRequest` 实现 POST 请求 通过原生的 `XMLHttpRequest` 对象,可以直接向服务器发送数据并接收响应: ```javascript var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://example.com/api/data', true); xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { console.log(JSON.parse(xhr.responseText)); } }; xhr.send(JSON.stringify({ key: "value" })); ``` 上述代码片段展示了如何设置请求头以及发送 JSON 数据[^1]。 #### 使用 Fetch API 发送 POST 请求 现代浏览器支持更简洁的 Fetch API 来处理网络请求。Fetch 提供了一个更加灵活和强大的接口用于 HTTP 操作: ```javascript fetch('https://example.com/api/data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ key: "value" }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ``` 这段代码利用了 Promise 链式调用来简化异步编程流程,并且能够轻松解析返回的数据为 JSON 格式[^4]。 #### 处理长时间运行的任务 如果后台执行的是耗时较长的操作,在某些情况下前端可能不会收到任何回应或者超时错误发生。为了避免这种情况,可以在服务端配置合理的超时时间或是采用轮询机制让客户端定期询问任务状态直到完成为止[^5]。 另外需要注意 CORS(Cross-Origin Resource Sharing)策略的影响,当尝试从不同源发起请求时可能会受到限制。确保目标服务器已正确设置了允许跨域访问的相关头部信息如 Access-Control-Allow-Origin 等参数值[^3]。 #### 结合框架功能增强交互体验 对于基于特定 Web 开发框架的应用程序来说,还可以借助它们内置的功能模块进一步优化用户体验。例如 FastAPI 用户可以通过调整其路由定义逻辑解决来自 JavascriptPOST 请求被拒绝的问题;而在 Symfony 和 jQuery 组合环境下,则需按照官方文档指引构建合适的控制器动作与 AJAX 调用配合工作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柴没吃饱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值