微信小程序 出现47001 data format error原因解决办法

微信小程序 出现47001 data format error原因解决办法

看下错误:

主要原因是请求的数据不是json格式引起的

分享下我用的代码和函数:

发送模板消息

 public function sendmessage(){
 $data=$_POST=json_decode(file_get_contents('php://input'), TRUE);
 $access_token=$this->getAccessToken();
 $request_url='https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token;
 $request_data=array(
  'touser'=>$data['touser'],//接收者(用户)的 openid
  'template_id'=>$data['template_id'],//所需下发的模板消息的id
  'page'=>$data['page'],//点击模板卡片后的跳转页面
  'form_id'=>$data['form_id'],//表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
  'data'=>$data['data'],//"keyword1": {"value": "339208499", "color": "#173177"}
  'emphasis_keyword'=>$data['emphasis_keyword']//模板需要放大的关键词,不填则默认无放大
 );
 $return=json_decode(https_request($request_url,$request_data,'json'),true);
 $this->response($return,'json');
 }

发送请求

function https_request($url,$data,$type){
 if($type=='json'){//json $_POST=json_decode(file_get_contents('php://input'), TRUE);
 $headers = array("Content-type: application/json;charset=UTF-8","Accept: application/json","Cache-Control: no-cache", "Pragma: no-cache");
 $data=json_encode($data);
 }
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
 if (!empty($data)){
 curl_setopt($curl, CURLOPT_POST, 1);
 curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
 }
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
 $output = curl_exec($curl);
 curl_close($curl);
 return $output;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 微信小程序 form组件详解

    表单: 将组件内的用户输入的<switch/> <input/> <checkbox/> <slider/> <radio/> <picker/> 提交 主要属性: 效果图: ml: <!--头像--> <view style="display:flex;justify-content: center;"> <image style="width:130rpx;height:

  • 微信小程序(十六)form组件详细介绍

    form表单组件 是提交form内的所有选中属性的值,注意每个form表单内的组件都必须有name属性指定否则提交不上去,button中的type两个submit,reset属性分别对应form的两个事件 主要属性: wxml <form bindsubmit="listenFormSubmit" bindreser="listenFormReser" > <checkbox-group name="checkbox" bind

  • 微信小程序 PHP后端form表单提交实例详解

    微信小程序 PHP后端form表单 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局.事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但是所有的数据都要以JSON的形式返回给小程序. 2.昨天写了登录注册.忘记密码功能,他们实质上都是一个表单提交操作.因此就拿注册功能来写这个例子. 3.目录图 js文件是逻辑控制,主要是它发送请求和接收数据, json 用于此页面局部 配置并且覆盖全局app.json配置, wxss用于

  • 微信小程序 form组件详解及简单实例

    微信小程序form 相关文章: 微信小程序 Button 微信小程序 radio 微信小程序 slider 微信小程序 switch 微信小程序 textarea 微信小程序 picker-view 微信小程序 picker 微信小程序 label 微信小程序 input 微信小程序 form 微信小程序 checkbox 实现效果图: 将表单内的用户输入的switch input checkbox slider radio picker 提交 当点击 <form/> 表单中 formType

  • 微信小程序中form 表单提交和取值实例详解

    微信小程序中form 表单提交和取值实例详解 我们知道,如果我们直接给 input 添加 bindinput,比如:<input bindinput="onUsernameInput" />,那么可以在 onUsernameInput 中直接使用 e.detail.value,即: onUsernameInput : function(e) { e.detail.value; } 但是,如果有多个输入控件,我们不可能为每个控件添加 bindinput.bindchange

  • 微信小程序 时间格式化(util.formatTime(new Date))详解

    微信小程序 时间格式化 微信小程序虽然还在内测,但是已经火的不行.赶紧看看.记录学习路上的点点滴滴. 获取时间直接用 Date.now() 得到一串数字.如下图: 获取格式化的时间用 util.formatTime(new Date) util是微信官方demo里面的提供的工具:如下代码 function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.

  • 微信小程序 表单Form实例详解(附源码)

    微信小程序 表单Form实例 表单Form的应用很广泛,我们可以利用form设计登录注册,也可以设计一种答题问卷的形式,今天主要讲一下form的使用 form表单,将组件内输入的"switch","input","checkbox","slider","radio","picker"的值进行提交,数据的格式为:name:value,所以表单中控件都需要添加name属性,否则找不到对应控件

  • 微信小程序 出现47001 data format error原因解决办法

    微信小程序 出现47001 data format error原因解决办法 看下错误: 主要原因是请求的数据不是json格式引起的 分享下我用的代码和函数: 发送模板消息 public function sendmessage(){ $data=$_POST=json_decode(file_get_contents('php://input'), TRUE); $access_token=$this->getAccessToken(); $request_url='https://api.we

  • 微信小程序 setData使用方法及常用错误解决办法

    微信小程序 setData使用方法及常用错误解决办法 最近在弄微信小程序,类似于共享单车用来练练手,基本原理就是小程序发送经纬度给服务器,服务器从数据库中检索经纬度附近的单车传给小程序. 就在这里..没错就是这里,传回来的值是以jsonarray格式传过来的. 我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok, 结果没想到小程序setData()设置数组对象的某个元

  • 详解微信小程序Page中data数据操作和函数调用

    微信小程序Page中data数据获取和设置 一.Page中data数据的获取和设置:        1.设置data数据 this.setData(object) setData() 参数格式:接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value.其中 key 可以非常灵活,以数据 路径的形式给出,如 array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义. this.setData({ ; en

  • 微信小程序Page中data数据操作和函数调用方法

    Page() 函数用来注册一个页面.接受一个 object 参数,其指定页面的初始数据.生命周期函数.事件处理函数等. //index.js Page({ data: { text: "This is page data.", sliderOffset: 0, sliderLeft: 0, state:{ genre:[], genre_index: 0, model:[], model_index: 0, terminalStatus:'', } }, onLoad: functio

  • 微信小程序 setData 对 data数据影响问题

    我是纯前端的,有些时候没有后端接口,只能模拟一些数据来操作.偶然之下,发现了setdata 的一些机制,也有可能不对,请多指教. 先放结论:data的变量通过setdata绑在一起,是同步变化的 准备做一个一键还原界面的按钮事件,如果有后端接口,只需调一下接口,就可以了.问题是没有,于是想弄两个一模一样的数组A,B:A用来渲染界面,一键还原的时候,就把B的值赋给A,从而引起页面重新渲染,达到重置界面的效果. 结果一点反应也没有. data里有模拟的数组  itemleft  itemright,

  • 微信小程序调用wx.getImageInfo遇到的坑解决

    这几天做到微信小程序详情页分享的功能,需要把原页面的一些参数带到分享页,然后在分享页需要获取图片的宽高等基本信息. 1.先说分享传参的方式: 在onShareAppMessage方法里面返回的path里面可以带参数传过去,具体传参的方式有两种,一种是可以传对象(需要把JSON对象stringiny),另外一种是通过一般的参数拼接的方式一个个拼. 代码: onShareAppMessage: function (res) { let data = this.data; let shareParam

  • 微信小程序 wx.login解密出现乱码的问题解决办法

    微信小程序 wx.login解密出现乱码的问题解决办法 最近在给公司开发微信小程序,需要用到微信登录,根据文档要求需要把获取的用户信息按照AES进行解密. 我使用的是官方提供的PHP demo,拷贝到程序中,测试发现,解密之后的数据前面有一串乱码. 类似于这样子的,前面一段是乱码. 经过仔细的检查,发现官方的提供的demo中的帐号和机密之后的信息是可以解密的,这就说明解密代码是没有问题的. 后来查询微信开发者社区,找到好多解密失败.其中一个回答说是因为多次调用wx.login之后导致的问题. 终

  • 微信小程序 swiper 组件遇到的问题及解决方法

    Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. Swiper开源.免费.稳定.使用简单.功能强大,是架构移动终端网站的重要选择! swiper 组件高度被限制为150px了,所以内容无法撑开. 解决办法 给这组件重新设置个高度,然后在把里面的图片设置为自动适应容器大小.图片模式设置为 宽度不变 自动适应高度 <swiper class="test" .....>

  • 微信小程序scroll-view不能左右滑动问题的解决方法

    最近在做自己小程序项目.因为并非专业前端 .所以一步一掉坑.在这里想着把遇到的问题总结一下.避免重复进坑. 问题: 在小程序页面布局的时候用到了scroll-view组件,发现横向移动没有效果.在网上查阅了一下资料发现问题所在. 我的wxml代码 <scroll-view scroll-x="true" class="scroll" bindscrolltolower="lower" bindscroll="scroll"

  • 微信小程序后端无法保持session的原因及解决办法问题

    之前未接触过微信小程序项目,在使用jQuery库的ajax中很正常,服务器也能保持会话状态.在使用wx.request中发现会话一直不能保持,一开始以为是服务器php.ini配置错误, 在代码中加入session_start()或者开启session.auto_start() 确认session.save_path配置正确且有读写权限 的情况下仍无效果.以上方法确实可以解决大多数情况下的页面刷新session无法保持问题. 但是在设置之后都没有效果. 最后发现,原来是jQuery的ajax(应该

随机推荐