Un résumé des problèmes qui surviennent lors du développement des mini-programmes WeChat

高洛峰
Libérer: 2017-03-11 16:08:15
original
1544 Les gens l'ont consulté

Cet article présente principalement des informations pertinentes sur le résumé des problèmes rencontrés dans le développement des mini programmes WeChat. Les amis dans le besoin peuvent s'y référer

Résumé des problèmes rencontrés dans le développement des mini programmes WeChat.

1. Étant donné que la méthode wx.request() du mini programme est asynchrone, après que app.js exécute ajax, lorsque chaque page charge les données globales de app.js, elle ne peut pas être chargée dans commande. Exemple :


//app.js
App({
  ajax:function(){
    let that = this;
    wx.request({
      url: 'https://a.com/url.php',
      method: 'GET',
      success: function(e){
        that.data = 123;
      }
    })
  };
})
//content.js
let app = getApp()
Page({
  getData: function(){;
    app.ajax();
    console.log(app.data); //undefined
  }
})
Copier après la connexion

Solution, utilisez la fonction asynchrone Promise :


//app.js
App({
  ajax:function(){
    let that = this;
    let promise = new Promise(function(resolve, reject){
      wx.request({
        url: 'https://a.com/url.php',
        method: 'GET',
        success: function(e){
          that.data = 123;
          resolve();
        }
      })
    });
  };
})
//content.js
let app = getApp()
Page({
  getData: function(){;
    app.ajax().then(()=>{
      console.log(app.data); //123
    });
  }
})
Copier après la connexion

2. Image uniquement la largeur et la hauteur d'origine peuvent être obtenues, mais la largeur et la hauteur existantes ne peuvent pas être obtenues. Cependant, la balise image encapsule l'attribut mode, qui peut être défini en fonction des besoins.

3. Il y a un espace transparent au bas de chaque balise d'image, pas de remplissage, pas de marge. Vous risquez de rester bloqué lorsque vous créez un calque de masque devant l'image.

4. Les requêtes réseau doivent déployer https

5. Lors de la configuration de tabBar, le paramètre pagePath dans le paramètre list doit contenir au moins le premier chemin du tableau pages dans app.json, sinon cela entraînera que tabBar ne soit pas affiché.

6. TabBar ne peut pas prendre de paramètres lors du saut Solution :


//search.js
var app = getApp();
Page({
  confirm: function(e){
    //获取数据,添加到全局
    let val = e.detail.value;
    app.searchWord = val;
    this.jump();
  },
  jump: function(){
    //跳转tabBar
    wx.switchTab({
      url: '../index/index',
    });
  },
});
 
//index.js
var app = getApp();
Page({
  onShow: function(e){
    //获取全局数据
    let val = app.searchWord;
  }
});
//需要传递参数的页面在跳转前将数据添加到app.js里。需要接受参数的页面在onShow方法接受之前添加到app.js的数据。
  
Copier après la connexion

7. URL demandée par la méthode wx.request() du mini-programme. doit commencer par https

8. Lorsque wx.request() utilise la méthode post pour demander, vous devez également ajouter un en-tête. La valeur header[content-type] est application/x-www-form-. codé en URL. Exemple :


wx.request({
  url: 'https://a.com/url.php',
  data: {message: 123},
  method: 'POST',
  header: {
    'content-type': 'application/x-www-form-urlencoded'
  },
  success: function(e){
    console.log(e)
  }
});
Copier après la connexion

9. L'applet ne peut pas charger les balises HTML et le rendu des données ne peut pas restituer les balises wxml (, etc.) . Vous pouvez utiliser wxParse.js pour traiter les données associées.

10. Android ne peut pas restituer les données demandées par wx.request().

Vérifiez si les données renvoyées ont un en-tête de nomenclature (3 caractères d'espace vide). L'analyse wx.request d'Android n'ignore pas l'en-tête de la nomenclature, ce qui entraîne le renvoi des données sous forme de chaîne au lieu d'un objet ou d'un tableau.

Exemple :

Les données renvoyées sont : (3 caractères vides){a:1, b:2}

Les données analysées sont : '{a : 1 , b:2}' (chaîne), pas {a:1, b:2} (objet)

Comme il ne s'agit pas d'un objet, le rendu du modèle et autres ne fonctionneront pas correctement. La solution consiste à supprimer l'en-tête de la nomenclature avant de renvoyer les données en arrière-plan. Si l'en-tête de BOM n'est pas supprimé en arrière-plan, il peut être supprimé sur le front-end. Cependant, si le dataType de wx.request est par défaut, il sera par défaut json et sera automatiquement analysé, ce qui rendra impossible la suppression de l'en-tête de BOM. .

Solution :


wx.request({
  url: url,
  method: 'GET',
  dataType: 'txt',
  success: function(e){
    let json = e.data.trim();
    let arr = JSON.parse(json);
  }
});
Copier après la connexion

Changez le dataType dans un format autre que json pour éviter que l'applet n'analyse automatiquement la chaîne json . Utilisez ensuite la méthode trim() pour supprimer les espaces des données renvoyées et enfin analyser la chaîne json.

11. L'omission de plusieurs lignes (-webkit-line-clamp) est normale lors du débogage, mais invalide lors de la publication.

Solution : Si vous ne souhaitez pas réviser, laissez simplement l'arrière-plan tronquer

Merci d'avoir lu, j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!