对 wx.request 的理解

微信小程序的设计模式基本依照于前端设计 html+css+js,关于与后端数据的交互,小程序不能像传统后端开发语言一样,能直接连接操作数据库。小程序更多的是像前端界面,通过网络请求调用后端API来实现数据交互的,而这交互的方式则是依托于 wx.request 方法。
首先wx.request的一般架构可以看如下代码,或者参照 官方文档 进行编写:

wx.request({url: 'https://域名/Api/Index/PostLogin', //仅为示例,网络请求必须以https开头method: 'post', //http请求方法,默认为Getdata: {x: '',y: ''},header: {'content-type': 'application/json' // 默认值},success(res) {    //这里是官方给出的写法,也可以写成 success: function(res){ … }console.log(res.data)},complete(res){}
})

以下为一个小案例:

微信小程序端的 login.wxml 页面代码,点击登录按钮通过form表单提交,就能调用login.js页面下的formSubmit方法,代码如图:

login.wxml页面的截面图如下:

微信小程序端的 login.js 页面的formSubmit方法如下,“wx”是系统对象,类似于jquery中的 $ 符号,wx.request({ … })就如jquery中的 $.ajax({ … }),其中的参数与ajax方法类似,此处为post请求,传递的参数类型位json格式,调用方法为PostLogin。

外部API方法代码简单框架,省略中间环节代码,如下:

using WebControl.Areas.ServiceApi.Models;
using Framework;
using Model.Extend;
using System.Web.Http;
using System.Web.Http.Results;namespace WebControl.Areas.ServiceApi.Controllers.login
{public class IndexController : ApiController{[HttpGet]public JsonResult<AjaxResult> GetLogin(){… //省略中间环节return Json(new AjaxResult { state = ResultType.success.GetRemark(), message = "Get恭喜你,登录成功!", total = 1, data = "[]" });}[HttpPost]public JsonResult<AjaxResult> PostLogin([FromBody]LoginUser value){… //省略中间环节return Json(new AjaxResult { state = ResultType.success.GetRemark(),  //登录情况message = "Post恭喜你,登录成功!",   //返回的msgtotal = 1,         //比对信息记录数data = "{ \"ComId\":\"" + value.ComId + "\",\"UserId\":\"" + value.UserId + "\",\"Password\":\"" + value.Password +"\"}" });    //返回用户的登录数据}}
}

以下为Api相关类方法,用户登录模型(LoginUser)、返回结果数据集(AjaxResult)、枚举扩展类(RemarkExtend)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebControl.Areas.ServiceApi.Models
{/*用户登录模型*/public class LoginUser{public string ComId { get; set; }public string UserId { get; set; }public string Password { get; set; }}
}using Model.Extend;
namespace Framework
{/// <summary>/// 返回结果数据/// </summary>public class AjaxResult{/// <summary>/// 操作结果类型/// </summary>public object state { get; set; }/// <summary>/// 获取 消息内容/// </summary>public string message { get; set; }/// <summary>/// 获取 返回数据/// </summary>public object data { get; set; }/// <summary>/// 总数据条数/// </summary>public int total { get; set; }}/// <summary>/// 表示 ajax 操作结果类型的枚举/// </summary>public enum ResultType{/// <summary>/// 成功结果类型/// </summary>[Remark("0")]success = 0,/// <summary>/// 消息结果类型/// </summary>[Remark("1")]info = 1,/// <summary>/// 警告结果类型/// </summary>[Remark("2")]warning = 2,/// <summary>/// 异常结果类型/// </summary>[Remark("3")]error = 3}using System;
using System.Reflection;namespace AutoCg.Model.Extend
{/// <summary>/// 指定一个标识性的属性,用于标识(枚举/字段)/// </summary>[AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field)]public class RemarkAttribute : Attribute{public RemarkAttribute(string remark){this.Remark = remark;}public string Remark { get; private set; }}public static class RemarkExtend{/// <summary>/// 扩展方法_获取枚举标识信息/// </summary>/// <param name="enumValue"></param>/// <returns></returns>public static string GetRemark(this Enum enumValue){Type type = enumValue.GetType();FieldInfo field = type.GetField(enumValue.ToString());if (field.IsDefined(typeof(RemarkAttribute), true)){RemarkAttribute remarkAttribute = (RemarkAttribute)field.GetCustomAttribute(typeof(RemarkAttribute));return remarkAttribute.Remark;}else{return enumValue.ToString();}}}
}

微信小程序数据交互(wx.request)相关推荐

  1. 微信小程序--后台交互/wx.request({})方法/渲染页面方法 解析

    小程序的后台获取数据方式get/post具体函数格式如下:wx.request({}) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  2. 微信小程序 | 如何使用wx.request发送文件?

    微信小程序不提供fromdata对象,以至于提交的表单里面没有办法包含文件,只能提交表单里面的文本字段,找了一下发现有大佬造好了轮子: https://github.com/zlyboy/wx-for ...

  3. 微信小程序数据使用wx:for循环展示

    在微信小程序开发过程中,常常会遇到循环数据一说,自己看了点,写了个demo体验下小程序的魅力 //音频数组 Page({ data: { items: [ //第一首 { name: 'I Am Yo ...

  4. 记录毕设做小程序的坑(微信小程序体验版wx.request无法获取用户的openid)

    毕设想做一个微信小程序,在体验版进行测试时发现,用户登录时不能把用户的信息存储到云数据库中,我当时真的谢了.测试了一下发现是wx.request获取不到openid了,因为我写的是获取到openid之 ...

  5. 微信小程序 苹果手机 https wx.request 不反应

    问题状况:微信小程序,安卓手机访问是正常的,可是苹果手机却不能访问. 问题排查:用苹果手机进入调试模块看输入结果,发现每次都停在request begin这里,后台也无法获取到前台传送过来的数据,所以 ...

  6. 微信小程序 在使用wx.request时显示加载中

    我们可以用wx.showLoading(OBJECT),当请求服务器的地方多了,怎么才能不每次都要去调用函数,我们只要对wx.request加工下就可以了,在utils下新建js文件network.j ...

  7. 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用

    原标题:鸿蒙远程交互应用 vs 微信小程序远程交互应用 鸿蒙的远程交互组件应用相对复杂,访问网络时,首先要配置网络权限,华为官方文档有问题,在此引用我老师配置的模板,见附件. 过程: 导入鸿蒙的网络请 ...

  8. 微信小程序数据渲染和数据请求

    微信开放文档 数据渲染 概念:微信小程序和Vue实现理念是一致的,是基于数据驱动完成页面数据的自动化渲染.微信小程序中数据和Vue一样是响应式,即数据的更改会驱动页面进行数据的刷新. 具体操作 首先找 ...

  9. .Net Webapi SignalR与微信小程序的交互

    .Net Webapi SignalR与微信小程序的交互 一.SignalR与Webapi 1.SignalR的安装: Signalr与跨域仅需要安装两个开源库 Microsoft.Owin.Cors ...

最新文章

  1. WebSocket负载均衡
  2. 6号团队-团队任务4:每日立会(2018-11-28)
  3. C#判断Textbox是否为数字
  4. linux学习第九天 (Linux就该这么学)
  5. html引入png不显示透明北京,解决在网页上显示PNG图片底色不透明的方法
  6. android 关于Uri.parse和uri.fromFile的区别
  7. jquery easyui Tab 引入页面的问题
  8. JavaSE----变量、String、运算符、流程控制
  9. 请求并操作指定url处的xml文件
  10. liux环境下配置jdk
  11. 服务器系统更新失败进不了系统,第五人格更新后进不去怎么办 更新连接服务器失败...
  12. java 上位机_java实现上位机与下位机串口通信
  13. ROS学习(13)自定义机器人的ROS导航
  14. python合并单元格出现:‘MergedCell‘ object attribute ‘value‘ is read-only 如何处理
  15. EasyPoi Excel简单导出导入
  16. 阿里云云开发平台的创建与部署
  17. C++后端开发的一些工具
  18. java 根据环境导包_java环境变量配置原理解析以及eclipse导入外包的方法
  19. 电大计算机网考怎么过,国家开放大学电大考试计算机网考题库大全(必过).doc...
  20. android简单旅游界面,快乐五一行 十大Android出游必备应用

热门文章

  1. 18个演讲PPT技巧,让你成为真正的演讲高手
  2. 图片漂浮代码javascript
  3. 下载steam创意工坊
  4. [酷软].换抓图工具了,从WinSnap到HyperSnap
  5. java报价系统_基于SSM框架下的JAVA产品报价系统
  6. 2021广西灵山中学高考成绩查询,2021年广西高考县中实力榜 玉林中学超群
  7. 人人都能学会的英语5:读写
  8. 3天精通Postman---基础应用接口测试流程接口架构和协议
  9. 格式工厂转换视频怎样设置才能使视频大小缩小
  10. 中国最早的计算机课程,寻找中国计算机历史