接口返回慢 图片加载失败问题

当后端接口响应慢,图片无法及时加载时,可以使用img标签的@error事件监听加载错误,然后在回调中设置图片的objectFit,高度,并重新赋值src以防止闪图。这种方法确保图片能正确显示,即使加载有延迟。
摘要由CSDN通过智能技术生成

在这里插入图片描述

该图片是通过后端接口返回picUrl来给img的src赋值 但是后端接口响应较慢 导致html加载完 data也没赋到值 图片加载裂开
解决办法:img标签添加@error事件获取错误信息回调
<img v-if="certificateUrl" :src="certificateUrl" class="certificate-img" @error="imageError" />

 imageError(event) {
            let img = event.target;
            event.target.style.objectFit = 'contain'; // 这个无所谓
            event.target.style.height = '646px'; // 默认设置高度
            img.src = this.certificateUrl; // url是在data中定义的
            img.onerror = null; // 防止闪图
        },

给img的src重新赋值 直到赋上为止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 uni.request 函数发起 HTTP 请求来获取图片数据。 具体方法是在 uni.request 中设置 responseType 为 'arraybuffer',然后将请求返回的二进制数据转换为 base64 编码并赋值给图片元素的 src 属性。 例如: ``` uni.request({ url: 'http://example.com/image.jpg', responseType: 'arraybuffer', success: (res) => { let base64 = wx.arrayBufferToBase64(res.data) let imageSrc = 'data:image/jpg;base64,' + base64 this.imageSrc = imageSrc } }) ``` 在模板中,可以使用 v-bind 指令将图片元素的 src 属性绑定到 imageSrc 变量上。 ``` <template> <view> <image v-bind:src="imageSrc"></image> </view> </template> ``` ### 回答2: 在uniapp中写接口返回图片数据,可以按照以下步骤进行操作: 首先,需要在后台服务器端编写一个接口用于返回图片数据。这个接口可以是使用任何编程语言实现的,比如PHP、Node.js等。接口的功能是获取图片的路径或者图片的二进制数据,并返回前端应用。 1. 后台服务器端编写接口的代码如下(以Node.js为例): ```javascript const fs = require('fs'); const path = require('path'); const express = require('express'); const app = express(); app.get('/getImage', (req, res) => { const imagePath = path.join(__dirname, 'images', 'sample.jpg'); // 图片路径 // 读取图片的二进制数据 fs.readFile(imagePath, (err, data) => { if (err) throw err; // 设置响应头,指定返回的数据类型为图片 res.setHeader('Content-Type', 'image/jpeg'); // 返回图片数据 res.send(data); }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. 运行上述代码,启动服务器。服务器将在3000端口监听请求。 3. 在uniapp中,可以使用uni.request方法发起请求获取图片数据。示例如下: ```javascript export default { methods: { getImageData() { uni.request({ url: 'http://localhost:3000/getImage', // 接口地址 method: 'GET', responseType: 'arraybuffer', // 设置返回数据的类型 success: (res) => { const base64Data = uni.arrayBufferToBase64(res.data); // 将返回的arraybuffer类型数据转为base64格式 this.imageData = `data:image/jpeg;base64,${base64Data}`; // 将base64格式数据赋值给前端展示的图片 } }); } } } ``` 4. 在uniapp页面中调用getImageData方法,发起请求并获取到图片数据后,将其赋值给前端展示的图片源,即可在前端页面中显示接口返回图片数据。 通过以上步骤,就可以在uniapp中写接口返回图片数据,并在前端应用中展示图片。 ### 回答3: 在uniapp中,编写接口返回图片数据需要按照以下步骤进行操作: 首先,需要在后端服务器中创建一个接口来将图片数据返回前端。可以使用Node.js、PHP、Java等后端语言来编写该接口。 接下来,在前端uniapp的代码中,可以使用uni.request函数来发送网络请求获取图片数据。这个函数可以发送HTTP请求到后端接口并获取返回的数据。 在uni.request函数中,需要设置请求的url为后端接口的地址,并指定请求的方法(例如GET或POST)。同时,还可以设置请求头、请求参数等信息,以便服务器能够正确处理请求。 当接收到后端返回图片数据后,可以在前端使用uni-app提供的相关组件(如<image>标签)来展示图片。可以将接收到的图片数据赋值给该组件的src属性,从而显示图片。 在图片展示的过程中,可以根据需要对图片进行进一步处理,比如调整大小、裁剪、添加滤镜等操作。uni-app提供了丰富的组件和插件来实现这些功能。 最后,根据具体需求和业务逻辑,确定是否需要对接口进行其他的错误处理或数据处理操作。比如判断接口返回的状态码,处理图片加载失败的情况等。 总之,在uniapp中编写接口返回图片数据需要通过后端服务器创建接口前端发送网络请求、接收数据并在前端显示图片的过程来完成。通过合理的代码编写和组件使用,可以轻松实现该功能,并为用户提供良好的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值