ajax:
//获取商品属性数据
function initGoodsAttr(){
  $.ajax({
      type: 'GET',
      url:"<?php echo WX_SITE_URL.'/wx_shop.php?act=goods&op=goods_info_json&id_type='.$output['id_type'].'&goods_id='.$output['goods_id'];?>",
      data:'',
      dataType: 'json',
      success: function(data){
        if (data.statusCode == '200') {
          goods = data.result;
          initAttrPage(openid);
          currentGoodsCount = 1;
        }
      },
      error: function(xhr, type){
          alert('商品属性获取失败!');
      }
  });
}
 
 
商城跳转:
 
 
 
 
 
微信执行请求的方法:
$appid = "";
$appsecret = "";
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$jsoninfo = json_decode($output, true);
$access_token = $jsoninfo["access_token"];
 
 
 
weiPHP中持久层的代码:
if (! empty ( $_REQUEST ['shop_id'] )) {
  $this->shop_id = I ( 'shop_id' );
  session ( 'wap_shop_id', $this->shop_id );
} else {
  $this->shop_id = session ( 'wap_shop_id' );
}
 
$map ['token'] = get_token ();
 
 
后台json的解析:
app提交:
$raw_str = $GLOBALS['HTTP_RAW_POST_DATA'];
$post = json_decode($raw_str);
$cate_id = intval($post->cate_id)>0 ? $post->cate_id : 0;//商品分类
 
Ajax提交:
(前)
var data = JSON.stringify(cart);
 
(后)
$str2 = file_get_contents("php://input");
$post = json_decode($str2);
$result = add_cart($post->member_id, $post->cart_all);
 
 
(前)
var data = {
    "mobile_phone": username
};
(后)
$mobile_phone = $_POST['mobile_phone'];
 
jquery操作html:
判断没有没有类:$(".product-subtract").hasClass("grey")
移除类:$(".product-subtract").removeClass("grey");
增加类:$(".product-subtract").addClass("grey");
内容获取:$(".attr-info").html(); 
内容赋值:$(".attr-info").html(color_value+","+ size_value); 
获取属性值:var dbg = the_size.attr("data_belong_goods");// 取出当前size所从属的商品id
修改属性值:$("#spec_image").attr("src",good.spec_image);
元素后追加内容:$('.row').after(goods);
元素前追加内容:$('.row').before(goods);
内部后追加内容:$('.row').append(goods);
内部前追加内容:$('.row').prepend(goods);
移除:$("#div1").remove();
隐藏:$("#div1").hide();
显示:$("#div1").show();
页面刷新:location.reload();
返回上一页并刷新:location.href = document.referrer
返回上一页不刷新:window.history.go(-1);
选择到多个元素后到遍历:
$(".attr").each(function (){}
获取父节点:
var thisPlus = $(this);
var thisGrid = thisPlus.closest('._grid');
 
js类型转换
count =Number(clothe.goods_storage);
str =String(clothe.goods_name);
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
 
js数组:
var  array = [];
array.push(temp_color);
 
空值判断:
 if (openid.length == 0)
 
js价格计算:
var test = '1.11';
var test2 = '1.01';
alert((Number(test)-Number(test2)).toFixed(2));
 
js页面跳转:
window.location.href='<?php echo WX_SITE_URL.'/wx_shop.php?act=member&op=loginPage'?>';
 
 
js  使用post请求跳转页面的方法(将参数封装到一个form内);
    $("#service").click(function () {
      var data = {
        "goods_id":"<?php echo $output['goods_info']['goods_commonid']; ?>",
        "isSingle":"0",
        "goods_price": $(".member-price").html()
      };
      standardPost("<?php echo WX_SITE_URL.'/wx_shop.php?act=goods&op=openim'?>", data);
    });
 
    function standardPost (url,args)
    {
      var body = $(document.body),
          form = $("<form method='post'></form>"),
          input;
      form.attr({"action":url});
      $.each(args,function(key,value){
          input = $("<input type='hidden'>");
          input.attr({"name":key});
          input.val(value);
          form.append(input);
      });
      form.appendTo(document.body);
      form.submit();
      document.body.removeChild(form[0]);
    }
 
    //使用form提交数据。 带array
      function standardPost (url,args){
        var body = $(document.body),
          form = $("<form method='post'></form>"),
          input;
        form.attr({"action":url});
        $.each(args,function(key,value){
          if (Object.prototype.toString.call(value) === '[object Array]') {
            for (var i = 0; i < value.length; i++) {
              var name = key+"[]";
              input = $("<input type='hidden'>");
              input.attr({"name":name});
              input.val(value[i]);
              form.append(input);
            }
          }else{
            input = $("<input type='hidden'>");
            input.attr({"name":key});
            input.val(value);
            form.append(input);
          }
         });
        form.appendTo(document.body);
        alert($("form").html());
        form.submit();
        document.body.removeChild(form[0]);
      }
 
 
 
 
 
php:
数组长度:count(array) 
数组增加:array_push($a,"blue","yellow");
字符串相等:
if (strcasecmp($output['goods_info']['return_price'], '0.00')==0)
或恒等式:
if ($output['goods_info']['return_price'] ==="0.00")
 
类型转换:
$foo = "1"; // $foo 是字符串类型 
$bar = intval($foo); // $bar 是整型 
 
分割字符串: 
$cart_id = explode(',', $_GET['cart_id']);
 
空值检查:
(!isset($mobile_phone) || empty($mobile_phone)
 
 
 
合成图片:
<?php
function mergerImg($imgs) {
 
        list($max_width, $max_height) = getimagesize($imgs['dst']);
        $dests = imagecreatetruecolor($max_width, $max_height);
 
        $dst_im = imagecreatefrompng($imgs['dst']);
 
        imagecopy($dests,$dst_im,0,0,0,0,$max_width,$max_height);
        imagedestroy($dst_im);
 
        $src_im = imagecreatefrompng($imgs['src']);
        $src_info = getimagesize($imgs['src']);
        imagecopy($dests,$src_im,0,$max_height/2,0,0,$src_info[0],$src_info[1]);
        imagedestroy($src_im);
 
        header("Content-type: image/jpeg");
        imagejpeg($dests);
}
 
$imgs = array(
        'dst' => 'http://www.*/*.png',
        'src' => 'http://www.*/*.png'
);
 
 
 <?php echo WX_TEMPLATES_URL;?>/

技术总结PHP+微信的更多相关文章

  1. 微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)

    1.点评 对于IM系统来说,如何做到IM聊天消息离线差异拉取(差异拉取是为了节省流量).消息多端同步.消息顺序保证等,是典型的IM技术难点. 就像即时通讯网整理的以下IM开发干货系列一样: <I ...

  2. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践

    1.概述 本文来自腾讯视频云终端技术总监rexchang(常青)技术分享,内容分别介绍了微信小程序视音视频和WebRTC的技术特征.差异等,并针对两者的技术差异分享和总结了微信小程序视音视频和WebR ...

  3. 腾讯技术分享:微信小程序音视频技术背后的故事

    1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...

  4. 技术博客——微信小程序UI的设计与美化

    技术博客--微信小程序UI的设计与美化 在alpha阶段的开发过后,我们的小程序也上线了.看到自己努力之后的成果大家都很开心,但对比已有的表情包小程序,我们的界面还有很大的提升空间,许多的界面都是各个 ...

  5. 技术博客--微信小程序canvas实现图片编辑

    技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...

  6. 技术博客——微信小程序的架构与原理

    技术博客--微信小程序的架构与原理 在两个月的微信小程序开发过程中,我曾走了不少弯路,也曾被很多现在看来十分可笑的问题所困扰.这些弯路与困扰,基本上都是由于当时对小程序的架构理解不够充分,对小程序的原 ...

  7. 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=

    weixin://dl/business/?ticket=  到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...

  8. 分享Azure DevOps技术,来微信群吧!

    现在QQ用户越来越少,基本上都转移到微信上了. 讨论问题,动不动就来一个微信群.下面这样几百人的微信群,专门讨论Azure DevOps (TFS)技术,你加入了么? 还等什么,扫描吧!

  9. 史上最全最强Charles截取手机https协议数据包教程(附上利用此技术制作最近微信比较火的头脑王者辅助外挂)!

    纯原创,思路也是本人花了半个小时整理出来的,整个完成花费了本人半天时间,由于不才刚大学毕业,所以有的编码方面可能不入大牛们的眼,敬请原谅!如有转载请附上本地址,谢谢! 最近微信朋友圈刚刚被跳一跳血洗, ...

随机推荐

  1. &lt;LeetCode OJ&gt; 328. Odd Even Linked List

    328. Odd Even Linked List Total Accepted: 9271 Total Submissions: 24497 Difficulty: Easy Given a sin ...

  2. mysqli 实例

    1.封装数据库连接(connect.php): <?php // 封装数据库连接 // 设置页面编码声明 header("Content-type: text/html; charse ...

  3. C# 播放H264裸码流

    要播放H264裸码流,可以分拆为以下三个工作: 1.解码H264裸码流获取YUV数据 2.将YUV数据转换为RGB数据填充图片 3.将获取的图片进行显示 要完成工作1,我们可以直接使用海思的解码库,由 ...

  4. docker的使用01

    使用Dockerfile构建镜像 vim dockerfile01 #注释信息 FROM ubuntu:latest //导入镜像 MAINTAINER leo "leo@leo.com&q ...

  5. Springboot集成权限管理框架apache shiro

    一.名词解释 网上一大堆 二.pom依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifact ...

  6. IOS设计模式浅析之桥接模式(Bridge)

    引言 在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星.苹果等:二是手机上 ...

  7. PHP抓取网络数据

    涉及到的知识点不多 file_get_contents:读取数据: preg_match_all:正则匹配: 和匹配之后的数据分析. 不同网页所需要抓取的数据是不同的,所以正则表达式自然也不一样,针对 ...

  8. 青蛙的约会 扩展欧几里得 方程ax+by=c的整数解 一个跑道长为周长为L米,两只青蛙初始位置为x,y;(x!=y,同时逆时针运动,每一次运动分别为m,n米;问第几次运动后相遇,即在同一位置。

    /** 题目:青蛙的约会 链接:https://vjudge.net/contest/154246#problem/R 题意:一个跑道长为周长为L米,两只青蛙初始位置为x,y:(x!=y,同时逆时针运 ...

  9. Vim使用技巧(2) -- 插入模式技巧 【持续更新】

    组合快捷键 Ctrl + h //删除前一个字母(同退格键) Ctrl + w //删除前一个单词 Ctrl + u //删除到行首 Esc //切换到普通模式 Ctrl + [ //切换到普通模式 ...

  10. go的sync.Map

    sync.Map这个数据结构是线程安全的(基本类型Map结构体在并发读写时会panic严重错误),它填补了Map线程不安全的缺陷,不过最好只在需要的情况下使用.它一般用于并发模型中对同一类map结构体 ...