微信小程序 运行出错 弹出提示框(获取token失败,请重试 或者 请求失败)



原因是:需要登陆微信公众平台在开发管理 中设置 相应的 服务器域名 中的 request合法域名

js 复制代码
// index.js

Page({
  data: {
    products:[],
    cardLayout: 'grid',  // 默认卡片布局为网格模式
    isGrid: true,  // 默认为网格布局
    page: 0, // 当前页码
    size: 10, // 每页大小
    hasMore: true, // 是否还有更多数据
    loading:true,
    hasMore: true, // 是否还有更多数据
    showBottomImage: false, // 控制底部图片的显示状态
    searchValue: '',
    currentFilter: 'all', // 默认选中 all
  },
  // 处理网格视图按钮点击事件
  handleGridViewClick: function() {
    const currentLayout = this.data.cardLayout;
    const newLayout = currentLayout === 'grid' ? 'list' : 'grid';

    this.setData({
      cardLayout: newLayout,
      isGrid: !this.data.isGrid
    });
  },
  onLoad: function () {
    this.fetchData();
  },
  // 发送请求获取数据
  async fetchData(page = 0, size = 10) {
    console.log('Fetching data', 'page:', page, 'size:', size); // 添加日志输出,记录传入的参数
    try {
      const token = wx.getStorageSync('token')
      console.log("获取商品数据前需要携带token=" + token);

      if (!token) {
        wx.showToast({
          title: '获取 token 失败,请重试',
          icon: 'none'
        });
        return;
      }

      const response = await new Promise((resolve, reject) => {
        wx.request({
          url: 'https://api.crossbiog.com/product/admin/list', // 使用配置文件中的URL
          method: 'GET',
          data: { page, size }, // 分页参数
          header: { 
            'token': token,
            'Cache-Control': 'max-age=60' // 设置缓存时间为60秒
          },
          success: resolve,
          fail: reject
        });
      });

      if (response.statusCode === 200) {
        const products = response.data.data.content || [];
        const formattedProducts = products.map(product => ({
          ...product,
          image:  `https://www.crossbiog.com/${product.image}`
        }));

        const filteredProducts = formattedProducts.filter(product =>
          product.status === 1 && product.editAuth === 1
        );

        this.setData({
          products: [...this.data.products, ...filteredProducts],
          loading: false, // 如果有加载指示器,设置为false
          hasMore: filteredProducts.length === size, // 是否还有更多数据
          page:page //更新页面数据中的page值
        });

        console.log('Updated page to:', page); // 添加日志输出,记录更新后的 page 值

        if (filteredProducts.length < size) {
          wx.showToast({
            title: '没有更多数据了',
            icon: 'none'
          });
        }
      } else {
        wx.showToast({
          title: '数据加载失败',
          icon: 'none'
        });
      }
    } catch (error) {
      wx.showToast({
        title: error.message || '请求失败',
        icon: 'none'
      });
    }
  },
  
  //监听页面触底事件,如用于加载更多数据。
  onReachBottom: function() {
    console.log('Current page before fetching more data:', this.data.page); // 添加日志输出,记录当前 page 值
    if (this.data.hasMore) {
      const nextPage = this.data.page + 1;
      this.fetchData(this.data.page + 1, this.data.size);
      console.log('Fetching data for page:', nextPage); // 添加日志输出,方便调试
    } else {
      wx.showToast({
        title: '没有更多数据了',
        icon: 'none'
      });
    }
    // 用户滑动到页面底部时触发
    this.setData({
      showBottomImage: true
    });
  },

  // 扫描二维码
  scanQrcode: function() {
    wx.scanCode({
      onlyFromCamera: false,  // 允许从相机和相册中选择图片
      success: (res) => {
        const jancode = res.result;
        console.log("扫描结果:", jancode);
        this.getProductByJancode(jancode);
      },
      fail: (err) => {
        wx.showToast({
          title: '扫描失败,请重试',
          icon: 'none'
        });
      }
    });
  },

  // 获取 token
  getToken: function() {
    return new Promise((resolve,reject)=>{
      const token = wx.getStorageSync('token')
      console.log('Token:', token);
      resolve(token)
    });
  },
  
  // 根据条码查询产品信息
  getProductByJancode: function(jancode) {
    this.getToken().then((token) => {
      if (!token) {
        wx.showToast({
          title: '获取 token 失败,请重试',
          icon: 'none'
        });
        return;
      }
      wx.request({
        url: `https://api.crossbiog.com/product/admin/detailByJancode`, // 使用配置文件中的URL
        method: 'GET',
        data: {
          jancode: jancode
        },
        header: {
          'token': `${token}`
        },
        success: (res) => {
          console.log("res=" + res);
          console.log("后端返回的数据:", res.data); // 添加日志输出
          if (res.statusCode === 200 && res.data && res.data.data) {
            const product = res.data.data;
            if (product) {
              // 显示产品信息
              this.setData({
                products: [product],
                showNoResultsImage: false // 如果有结果,隐藏无结果图片
              });
            } else {
              // 没有找到产品
              wx.showToast({
                title: '未找到该条码对应的产品',
                icon: 'none'
              });
              this.setData({
                showNoResultsImage: true // 如果没有结果,显示无结果图片
              });
            }
          } else {
            wx.showToast({
              title: '数据加载失败',
              icon: 'none'
            });
          }
        },
        fail: (err) => {
          wx.showToast({
            title: '请求失败',
            icon: 'none'
          });
        }
      });
    }).catch((err) => {
      wx.showToast({
        title: err.message,
        icon: 'none'
      });
    });
  },

  // 点击商品卡片后跳转到详情页
  navigateToDetail(event) {
    const productId = event.currentTarget.dataset.id;
    console.log("跳转到详情页,产品ID:", productId);
    wx.navigateTo({
      url: `/pages/productDetail/productDetail?id=${productId}`,
    });
  },

        // 处理输入框的输入事件
        handleSearchInput: function (e) {
          this.setData({
            searchValue: e.detail.value // 更新输入框的值
          });
        },
  
        // 处理搜索事件(按下回车时)
        handleSearch: function () {
          const value = this.data.searchValue; // 获取输入的值
          if (!value) {
            wx.showToast({
              title: '请输入搜索内容',
              icon: 'none'
            });
            return;
          }
              // 获取 token 并跳转到结果页面
              this.getToken().then((token) => {
                  if(!token){
                      wx.showToast({
                        title: '获取 token 失败,请重试',
                        icon: 'none'
                    });
                    return;
                  }
                  // 跳转到另一个页面,并传递搜索内容和 token
                  wx.navigateTo({
                      url: `/pages/searchResults/searchResults?value=${value}&token=${token}`
                  }); 
              }).catch((err)=>{
                    // 获取 token 失败时,在这里处理错误
                    wx.showToast({
                        title: '获取 token 失败,请重试',
                        icon: 'none'
                    });
              })
        },

        handleFilterClick: function(e) {
        const filterType = e.target.dataset.type;
        this.setData({
          currentFilter: filterType,
          page: 0, // 重置页码
          hasMore: true, // 重置是否有更多数据标志
          products: [] // 清空当前商品列表
        });
        this.fetchData();
    },
})
相关推荐
先知demons10 小时前
uniapp开发微信小程序笔记10-触底加载
前端·笔记·微信小程序·小程序·uni-app
JSON_L12 小时前
小程序 - 比较数字大小
小程序
paterWang12 小时前
小程序-基于java+SpringBoot+Vue的音乐播放器小程序设计与实现
java·spring boot·小程序
oil欧哟12 小时前
️️耗时一周,肝了一个超丝滑的卡盒小程序
小程序
嫩八14 小时前
uniapp 自定义导航栏增加首页按钮,仿微信小程序操作胶囊
javascript·vue.js·微信·微信小程序·uni-app
oil欧哟14 小时前
🗃️耗时两周,肝了一个超丝滑的卡盒小程序(第二期)
前端·vue.js·微信小程序
码农客栈15 小时前
小程序入门学习(四)之全局配置
小程序
2401_8441394416 小时前
安心护送转运平台小程序
微信小程序·小程序·微信公众平台
码农客栈17 小时前
小程序入门学习(六)之本地生活案例
小程序