XMLHttpRequest重新定义的问题

问题

项目上线后,遇到了接口请求的问题,提示Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.
debug后发现详情如下:
image
原来XMLHttpRequest是被重新定义了。开发环境下正常的情况应该是这样的:
image

解决

下面是适合我的项目的解决办法:项目是基于vue-element-admin二次开发的,然后在项目中全局搜索XMLHttpRequest,果然发现在mock中有redefine XMLHttpRequest的行为。

// for front mock
// please use it cautiously, it will redefine XMLHttpRequest,
// which will cause many of your third-party libraries to be invalidated(like progress event).
function mockXHR() {
    ...
}

不过发现vue-element-admin作者已经在main.js中说明了需要在正式环境中去除掉相关代码,唉,还是学习的不到位,疏忽了!

/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */
if (process.env.NODE_ENV === 'production') {
  const { mockXHR } = require('../mock')
  mockXHR()
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XMLHttpRequest 是 JavaScript 中用于发送 HTTP 请求的对象。它可以用于与服务器进行通信,获取数据或发送数据。下面是一个对 XMLHttpRequest 的详细解释: XMLHttpRequest 是一个内置的 JavaScript 对象,它提供了一种简单而灵活的方式来发送异步请求。通过使用该对象,浏览器可以在后台与服务器进行通信,而不会影响用户界面的交互。 XMLHttpRequest 对象的使用流程如下: 1. 创建 XMLHttpRequest 对象:使用 new 关键字创建 XMLHttpRequest 对象,如下所示: ```javascript var xhr = new XMLHttpRequest(); ``` 2. 设置请求参数:设置请求的方法、URL 和是否使用异步方式。常见的请求方法有 GET 和 POST,URL 则是指要发送请求的服务器地址。通过调用 `open` 方法设置这些参数,如下所示: ```javascript xhr.open('GET', 'https://example.com/api/data', true); ``` 3. 设置响应处理函数:通过设置 `onload`、`onerror` 和 `onreadystatechange` 等属性,来定义请求完成后的响应处理函数。这些函数会在请求成功、失败或状态发生变化时被触发。 ```javascript xhr.onload = function() { // 请求成功后的处理逻辑 }; xhr.onerror = function() { // 请求失败后的处理逻辑 }; xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { // 请求成功后的处理逻辑 } else { // 请求失败后的处理逻辑 } } }; ``` 4. 发送请求:使用 `send` 方法发送请求。对于 GET 请求,可以直接发送,而对于 POST 请求,则需要将要发送的数据作为参数传递给 `send` 方法。 ```javascript xhr.send(); ``` 以上就是使用 XMLHttpRequest 的基本流程。接下来是一些可能会引发问题的情况和相关问题: 相关问题: 1. 如何发送带有参数的 POST 请求? 2. 如何处理跨域请求? 3. 如何处理异步请求的并发控制?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值