原生ajax超详细讲解

本文探讨了HTTP中的GET和POST方法在处理表单提交时的应用。GET方法适用于数据量小的场景,可通过手动或表单序列化方式拼接参数。对于不在表单内的数据提交,可以考虑将数据转换为查询字符串附加到URL。POST方法更适合大量数据或敏感信息的传递,能处理复杂表单数据。此外,POST方法还常用于文件上传,通常结合multipart/form-data编码类型实现。

一 :使用GET方法提交表单

1:表单数据不多,手动拼接get需要的参数(key=value&key=value)

2 :表单数量较多,手动拼接效率太低,应该使用表单的序列化

所谓表单序列化就是通过一两行代码就可以获取表单中的数据,变成key=value&key=value

3:某些情况,要提交的数据不在表单中,请想办法解决一下

二:使用POST方法提交表单

三:使用POST方法上传文件

### 概念本质 - **Ajax**:即 Asynchronous JavaScript and XML,是一种网页开发技术,借助 JavaScript 和 XML(如今更多使用 JSON),无需重新加载整个页面就能更新部分页面内容,实现异步向服务器发送请求并接收响应,提高页面响应速度和用户体验,有实时更新、表单验证等作用[^2]。 - **Axios**:是用于网络请求的第三方库,对 xhr 进行二次封装,在 nodejs 端还有 http 请求适配器,返回一个 Promise[^1]。 ### 用法层面 - **Ajax**:使用原生 XMLHttpRequest 对象来发送请求,代码较为繁琐,需要手动处理请求状态和错误。示例如下: ```javascript const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.example.com/data', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log(xhr.responseText); } }; xhr.send(); ``` - **Axios**:提供了简洁的 API,使用方便,支持 Promise 语法,可使用 `async/await` 处理异步请求。示例如下: ```javascript axios.get('https://api.example.com/data') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` ### 功能特性 - **Ajax**:原生功能相对基础,处理复杂请求和响应时需手动编写较多代码。 - **Axios**:具备更多高级功能,如拦截请求和响应、自动转换 JSON 数据、取消请求、客户端支持防止 CSRF/XSRF 等。以下是拦截器示例: ```javascript // 请求拦截器 axios.interceptors.request.use(config => { config.headers['Authorization'] = 'Bearer your_token'; return config; }, error => { return Promise.reject(error); }); // 响应拦截器 axios.interceptors.response.use(response => { return response; }, error => { return Promise.reject(error); }); ``` ### 兼容性 - **Ajax**:基于原生 XMLHttpRequest,兼容性好,在较旧浏览器也能使用。 - **Axios**:依赖 Promise,在不支持 Promise 的旧浏览器中需使用 polyfill 来保证兼容性。 ### 跨域处理 - **Ajax**:处理跨域请求时,需服务器端配合设置 CORS 或使用 JSONP 等方式,实现相对复杂。 - **Axios**:同样依赖服务器端设置 CORS,但使用方式更简单,与其他请求逻辑一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

测试的自我修养

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

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

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

打赏作者

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

抵扣说明:

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

余额充值